{"directed": true, "multigraph": false, "graph": {}, "nodes": [{"id": "metagpt/schema.py"}, {"id": "source_code"}, {"id": "python"}, {"id": "metagpt/schema.py:AIMessage"}, {"id": "class"}, {"id": "{\"name\":\"AIMessage\",\"package\":\"metagpt/schema.py:AIMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor"}, {"id": "{\"name\":\"APIRequestor\",\"package\":\"metagpt/provider/general_api_base.py:APIRequestor\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}},\"methods\":{\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]},\"arequest_raw\":{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]},\"request\":{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]},\"request_headers\":{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]},\"request_raw\":{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}},\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"],\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\",\"aiohttp.ClientResponse\",\"requests.Response\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"id": "class_property"}, {"id": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"id": "{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"id": "{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"id": "{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"id": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"id": "class_method"}, {"id": "{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"id": "{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"id": "{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"id": "{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"id": "{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}"}, {"id": "?:AZURE_AD"}, {"id": "?:OPEN_AI"}, {"id": "?:OpenAIResponse"}, {"id": "?:AsyncGenerator"}, {"id": "?:aiohttp.ClientResponse"}, {"id": "?:requests.Response"}, {"id": "metagpt/actions/action.py"}, {"id": "metagpt/actions/action.py:Action"}, {"id": "{\"name\":\"Action\",\"package\":\"metagpt/actions/action.py:Action\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"node\":{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},\"prefix\":{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"set_name_if_empty\":{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]},\"set_prefix\":{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}},\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:desc"}, {"id": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]}"}, {"id": "metagpt/actions/action.py:Action:model_config"}, {"id": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:name"}, {"id": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:node"}, {"id": "{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:prefix"}, {"id": "{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:project_name"}, {"id": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:project_path"}, {"id": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:prompt_schema"}, {"id": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:repo"}, {"id": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"id": "{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:set_prefix"}, {"id": "{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}"}, {"id": "?:CodePlanAndChangeContext"}, {"id": "?:CodeSummarizeContext"}, {"id": "?:CodingContext"}, {"id": "?:RunCodeContext"}, {"id": "?:TestingContext"}, {"id": "metagpt/actions/action_node.py"}, {"id": "metagpt/actions/action_node.py:ActionNode"}, {"id": "{\"name\":\"ActionNode\",\"package\":\"metagpt/actions/action_node.py:ActionNode\",\"attributes\":{\"children\":{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"example\":{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]},\"expected_type\":{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"key\":{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"schema\":{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}},\"methods\":{\"add_child\":{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_children\":{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"auto_review\":{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]},\"auto_revise\":{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"compile\":{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]},\"compile_example\":{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_instruction\":{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_to\":{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]},\"create_children_class\":{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]},\"create_class\":{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]},\"create_model_class\":{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]},\"fill\":{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]},\"from_children\":{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"from_pydantic\":{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]},\"get_child\":{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]},\"get_children_mapping\":{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_children_mapping_old\":{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_mapping\":{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_self_mapping\":{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"human_review\":{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]},\"human_revise\":{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]},\"keys\":{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]},\"review\":{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"revise\":{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]},\"set_recursive\":{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]},\"simple_fill\":{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]},\"simple_review\":{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"simple_revise\":{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"tagging\":{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]},\"update_instruct_content\":{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}},\"compositions\":[\"ActionNode\",\"Type\",\"BaseModel\"],\"aggregations\":[\"ReviseMode\",\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:children"}, {"id": "{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:content"}, {"id": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:context"}, {"id": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:example"}, {"id": "{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"id": "{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"id": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"id": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:key"}, {"id": "{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:llm"}, {"id": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:schema"}, {"id": "{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"id": "{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"id": "{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:auto_review"}, {"id": "{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:auto_revise"}, {"id": "{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile"}, {"id": "{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"id": "{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"id": "{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"id": "{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_children_class"}, {"id": "{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_class"}, {"id": "{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"id": "{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:fill"}, {"id": "{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"id": "{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_pydantic"}, {"id": "{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_child"}, {"id": "{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_children_mapping"}, {"id": "{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old"}, {"id": "{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"id": "{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_self_mapping"}, {"id": "{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:human_review"}, {"id": "{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:human_revise"}, {"id": "{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:keys"}, {"id": "{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:review"}, {"id": "{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:revise"}, {"id": "{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"id": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"id": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"id": "{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"id": "{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_review"}, {"id": "{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_revise"}, {"id": "{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"id": "{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"id": "{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:update_instruct_content"}, {"id": "{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}"}, {"id": "?:ActionNode"}, {"id": "?:Type"}, {"id": "?:BaseModel"}, {"id": "?:ReviseMode"}, {"id": "?:ReviewMode"}, {"id": "metagpt/actions/action_output.py"}, {"id": "metagpt/actions/action_output.py:ActionOutput"}, {"id": "{\"name\":\"ActionOutput\",\"package\":\"metagpt/actions/action_output.py:ActionOutput\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}},\"methods\":{},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:content"}, {"id": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"id": "metagpt/actions"}, {"id": ""}, {"id": "metagpt/actions:ActionType"}, {"id": "{\"name\":\"ActionType\",\"package\":\"metagpt/actions:ActionType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions:ActionType:name"}, {"id": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:ApiType"}, {"id": "{\"name\":\"ApiType\",\"package\":\"metagpt/provider/general_api_base.py:ApiType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"from_str\":{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:ApiType:name"}, {"id": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"id": "{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/architect.py"}, {"id": "metagpt/roles/architect.py:Architect"}, {"id": "{\"name\":\"Architect\",\"package\":\"metagpt/roles/architect.py:Architect\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:constraints"}, {"id": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:goal"}, {"id": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:name"}, {"id": "metagpt/roles/architect.py:Architect:profile"}, {"id": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"package\":\"metagpt/actions/skill_action.py:ArgumentsParingAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"parse_arguments\":{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"id": "{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"id": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"id": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"id": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"id": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"id": "{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "?:Message"}, {"id": "metagpt/roles/assistant.py"}, {"id": "metagpt/roles/assistant.py:Assistant"}, {"id": "{\"name\":\"Assistant\",\"package\":\"metagpt/roles/assistant.py:Assistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]},\"get_memory\":{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]},\"load_memory\":{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]},\"refine_memory\":{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]},\"skill_handler\":{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]},\"talk\":{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]},\"talk_handler\":{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}},\"compositions\":[\"SkillsDeclaration\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:constraints"}, {"id": "metagpt/roles/assistant.py:Assistant:desc"}, {"id": "metagpt/roles/assistant.py:Assistant:goal"}, {"id": "metagpt/roles/assistant.py:Assistant:memory"}, {"id": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:name"}, {"id": "metagpt/roles/assistant.py:Assistant:profile"}, {"id": "metagpt/roles/assistant.py:Assistant:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:act"}, {"id": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"id": "{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"id": "{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"id": "{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"id": "{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:talk"}, {"id": "{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"id": "{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:think"}, {"id": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}"}, {"id": "?:SkillsDeclaration"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"id": "{\"name\":\"AsyncSSEClient\",\"package\":\"metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient\",\"attributes\":{},\"methods\":{\"stream\":{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream"}, {"id": "{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/context.py"}, {"id": "metagpt/context.py:AttrDict"}, {"id": "{\"name\":\"AttrDict\",\"package\":\"metagpt/context.py:AttrDict\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]},\"remove\":{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:model_config"}, {"id": "metagpt/context.py:AttrDict:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:remove"}, {"id": "{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData"}, {"id": "{\"name\":\"AudioData\",\"package\":\"metagpt/tools/iflytek_tts.py:AudioData\",\"attributes\":{\"audio\":{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]},\"ced\":{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"id": "{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"id": "{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"id": "{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"package\":\"metagpt/provider/azure_openai_api.py:AzureOpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AsyncAzureOpenAI\"],\"aggregations\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"id": "?:AsyncAzureOpenAI"}, {"id": "metagpt/tools/azure_tts.py"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS"}, {"id": "{\"name\":\"AzureTTS\",\"package\":\"metagpt/tools/azure_tts.py:AzureTTS\",\"attributes\":{\"region\":{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]},\"subscription_key\":{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}},\"methods\":{\"role_style_text\":{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]},\"role_text\":{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]},\"style_text\":{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]},\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"id": "{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"id": "{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"id": "{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"id": "{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"id": "{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"id": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"id": "{\"name\":\"BEAGECTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:BEAGECTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py"}, {"id": "metagpt/strategy/tot.py:BFSSolver"}, {"id": "{\"name\":\"BFSSolver\",\"package\":\"metagpt/strategy/tot.py:BFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"generate_and_evaluate_nodes\":{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"id": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"id": "{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:BaseContext"}, {"id": "{\"name\":\"BaseContext\",\"package\":\"metagpt/schema.py:BaseContext\",\"attributes\":{},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}},\"compositions\":[],\"aggregations\":[\"T\"]}"}, {"id": "metagpt/schema.py:BaseContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}"}, {"id": "?:T"}, {"id": "metagpt/strategy/base.py"}, {"id": "metagpt/strategy/base.py:BaseEvaluator"}, {"id": "{\"name\":\"BaseEvaluator\",\"package\":\"metagpt/strategy/base.py:BaseEvaluator\",\"attributes\":{},\"methods\":{\"status_verify\":{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"id": "{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py"}, {"id": "metagpt/provider/base_llm.py:BaseLLM"}, {"id": "{\"name\":\"BaseLLM\",\"package\":\"metagpt/provider/base_llm.py:BaseLLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]},\"aask_batch\":{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]},\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"get_choice_delta_text\":{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]},\"get_choice_function\":{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"id": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:cost_manager"}, {"id": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"id": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"id": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"id": "{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"id": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text"}, {"id": "{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"id": "{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"id": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"id": "?:AsyncOpenAI"}, {"id": "?:CostManager"}, {"id": "metagpt/strategy/base.py:BaseParser"}, {"id": "{\"name\":\"BaseParser\",\"package\":\"metagpt/strategy/base.py:BaseParser\",\"attributes\":{},\"methods\":{\"propose\":{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose(current_state: str): str\",\"aggregations\":[]},\"sample\":{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample(current_state: str): str\",\"aggregations\":[]},\"value\":{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value(input: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:propose"}, {"id": "{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose(current_state: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:sample"}, {"id": "{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample(current_state: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:value"}, {"id": "{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value(input: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"package\":\"metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin\",\"attributes\":{\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_extract_content_from_output\":{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]},\"run_repair_llm_output\":{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_repair_llm_raw_output\":{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]},\"run_retry_parse_json_text\":{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"id": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"id": "{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"id": "{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"id": "{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"id": "{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py"}, {"id": "metagpt/document_store/base_store.py:BaseStore"}, {"id": "{\"name\":\"BaseStore\",\"package\":\"metagpt/document_store/base_store.py:BaseStore\",\"attributes\":{},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search()\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:add"}, {"id": "{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:search"}, {"id": "{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:write"}, {"id": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory"}, {"id": "{\"name\":\"BrainMemory\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory\",\"attributes\":{\"cacheable\":{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]},\"historical_summary\":{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]},\"history_text\":{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]},\"is_dirty\":{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]},\"is_history_available\":{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]},\"last_history_id\":{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]},\"last_talk\":{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"add_answer\":{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_history\":{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_talk\":{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]},\"dumps\":{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]},\"exists\":{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]},\"extract_info\":{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]},\"get_knowledge\":{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]},\"get_title\":{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]},\"is_related\":{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]},\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]},\"pop_last_talk\":{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]},\"rewrite\":{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]},\"set_history_summary\":{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]},\"split_texts\":{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]},\"summarize\":{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]},\"to_int\":{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]},\"to_metagpt_history_format\":{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]},\"to_redis_key\":{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"BaseLLM\"],\"aggregations\":[\"BrainMemory\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"id": "{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"id": "{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"id": "{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"id": "{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"id": "{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"id": "{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"id": "{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"id": "{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"id": "{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"id": "{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"id": "{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"id": "{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"id": "{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"id": "{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"id": "{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"id": "{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"id": "{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"id": "{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"id": "{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"id": "{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"id": "{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"id": "{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"id": "{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"id": "{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"id": "{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"id": "{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"id": "{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}"}, {"id": "?:BaseLLM"}, {"id": "?:BrainMemory"}, {"id": "metagpt/configs/browser_config.py"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig"}, {"id": "{\"name\":\"BrowserConfig\",\"package\":\"metagpt/configs/browser_config.py:BrowserConfig\",\"attributes\":{\"browser\":{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"driver\":{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:browser"}, {"id": "{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:driver"}, {"id": "{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:path"}, {"id": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:BugFixContext"}, {"id": "{\"name\":\"BugFixContext\",\"package\":\"metagpt/schema.py:BugFixContext\",\"attributes\":{\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:BugFixContext:filename"}, {"id": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py"}, {"id": "metagpt/config2.py:CLIParams"}, {"id": "{\"name\":\"CLIParams\",\"package\":\"metagpt/config2.py:CLIParams\",\"attributes\":{\"git_reinit\":{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}},\"methods\":{\"check_project_path\":{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/config2.py:CLIParams:git_reinit"}, {"id": "{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:inc"}, {"id": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:max_auto_summarize_code"}, {"id": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:project_name"}, {"id": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:project_path"}, {"id": "{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:reqa_file"}, {"id": "{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:check_project_path"}, {"id": "{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py"}, {"id": "metagpt/utils/git_repository.py:ChangeType"}, {"id": "{\"name\":\"ChangeType\",\"package\":\"metagpt/utils/git_repository.py:ChangeType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:ChangeType:name"}, {"id": "metagpt/document_store/chromadb_store.py"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"id": "{\"name\":\"ChromaStore\",\"package\":\"metagpt/document_store/chromadb_store.py:ChromaStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"collection\":{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"id": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"id": "{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"id": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py"}, {"id": "metagpt/provider/anthropic_api.py:Claude2"}, {"id": "{\"name\":\"Claude2\",\"package\":\"metagpt/provider/anthropic_api.py:Claude2\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"id": "{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo"}, {"id": "{\"name\":\"CodeBlockInfo\",\"package\":\"metagpt/repo_parser.py:CodeBlockInfo\",\"attributes\":{\"end_lineno\":{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]},\"lineno\":{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]},\"properties\":{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]},\"tokens\":{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"id": "{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"id": "{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"id": "{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"id": "{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"id": "{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/common.py"}, {"id": "metagpt/utils/common.py:CodeParser"}, {"id": "{\"name\":\"CodeParser\",\"package\":\"metagpt/utils/common.py:CodeParser\",\"attributes\":{},\"methods\":{\"parse_block\":{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_block"}, {"id": "{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"id": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_code"}, {"id": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"id": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_str"}, {"id": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext"}, {"id": "{\"name\":\"CodePlanAndChangeContext\",\"package\":\"metagpt/schema.py:CodePlanAndChangeContext\",\"attributes\":{\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"prd_filename\":{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:design_filename"}, {"id": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:filename"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename"}, {"id": "{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:requirement"}, {"id": "{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:task_filename"}, {"id": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"package\":\"metagpt/schema.py:CodeSummarizeContext\",\"attributes\":{\"codes_filenames\":{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]},\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"id": "{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"id": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"id": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"id": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"id": "metagpt/schema.py:CodingContext"}, {"id": "{\"name\":\"CodingContext\",\"package\":\"metagpt/schema.py:CodingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"design_doc\":{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"task_doc\":{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:CodingContext:code_doc"}, {"id": "{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:design_doc"}, {"id": "{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:filename"}, {"id": "metagpt/schema.py:CodingContext:task_doc"}, {"id": "{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "?:Document"}, {"id": "metagpt/actions/research.py"}, {"id": "metagpt/actions/research.py:CollectLinks"}, {"id": "{\"name\":\"CollectLinks\",\"package\":\"metagpt/actions/research.py:CollectLinks\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"rank_func\":{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}},\"compositions\":[\"Callable\"],\"aggregations\":[\"str\\\\\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:desc"}, {"id": "metagpt/actions/research.py:CollectLinks:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/research.py:CollectLinks:name"}, {"id": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"id": "{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"id": "metagpt/actions/research.py:CollectLinks:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}"}, {"id": "?:Callable"}, {"id": "?:str\\"}, {"id": "metagpt/learn/skill_loader.py"}, {"id": "metagpt/learn/skill_loader.py:Components"}, {"id": "{\"name\":\"Components\",\"package\":\"metagpt/learn/skill_loader.py:Components\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:ConductResearch"}, {"id": "{\"name\":\"ConductResearch\",\"package\":\"metagpt/actions/research.py:ConductResearch\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:ConductResearch:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/config2.py:Config\",\"attributes\":{\"AZURE_TTS_REGION\":{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]},\"AZURE_TTS_SUBSCRIPTION_KEY\":{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_KEY\":{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_SECRET\":{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]},\"IFLYTEK_APP_ID\":{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]},\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\":{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]},\"browser\":{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]},\"code_review_k_times\":{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]},\"enable_longterm_memory\":{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"llm_for_researcher_report\":{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]},\"llm_for_researcher_summary\":{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]},\"mermaid\":{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]},\"mermaid_engine\":{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]},\"mmdc\":{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]},\"pyppeteer_executable_path\":{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]},\"redis\":{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]},\"redis_key\":{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]},\"repair_llm_output\":{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},\"s3\":{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]},\"search\":{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]},\"workspace\":{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}},\"methods\":{\"default\":{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]},\"from_home\":{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]},\"get_azure_llm\":{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"get_openai_llm\":{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"update_via_cli\":{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\",\"S3Config\",\"SearchConfig\"],\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:AZURE_TTS_REGION"}, {"id": "{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY"}, {"id": "{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:IFLYTEK_API_KEY"}, {"id": "{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:IFLYTEK_API_SECRET"}, {"id": "{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:IFLYTEK_APP_ID"}, {"id": "{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL"}, {"id": "{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:browser"}, {"id": "{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:code_review_k_times"}, {"id": "{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:enable_longterm_memory"}, {"id": "{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:inc"}, {"id": "metagpt/config2.py:Config:language"}, {"id": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:llm"}, {"id": "metagpt/config2.py:Config:llm_for_researcher_report"}, {"id": "{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:llm_for_researcher_summary"}, {"id": "{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:max_auto_summarize_code"}, {"id": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mermaid"}, {"id": "{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mermaid_engine"}, {"id": "{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mmdc"}, {"id": "{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:project_name"}, {"id": "metagpt/config2.py:Config:project_path"}, {"id": "metagpt/config2.py:Config:prompt_schema"}, {"id": "{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:proxy"}, {"id": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:puppeteer_config"}, {"id": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:pyppeteer_executable_path"}, {"id": "{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:redis"}, {"id": "{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"id": "metagpt/config2.py:Config:redis_key"}, {"id": "{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:repair_llm_output"}, {"id": "{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:reqa_file"}, {"id": "{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:s3"}, {"id": "{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]}"}, {"id": "metagpt/config2.py:Config:search"}, {"id": "{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]}"}, {"id": "metagpt/config2.py:Config:workspace"}, {"id": "{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:default"}, {"id": "{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config:from_home"}, {"id": "{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config:get_azure_llm"}, {"id": "{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:get_openai_llm"}, {"id": "{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:update_via_cli"}, {"id": "{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}"}, {"id": "?:RedisConfig"}, {"id": "?:S3Config"}, {"id": "?:SearchConfig"}, {"id": "?:LLMConfig"}, {"id": "metagpt/tools/openai_text_to_embedding.py"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config\",\"attributes\":{\"alias\":{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"id": "{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"id": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/strategy/tot.py:TreeofThought:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"id": "metagpt/context.py:Context"}, {"id": "{\"name\":\"Context\",\"package\":\"metagpt/context.py:Context\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"llm\":{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]},\"llm_with_cost_manager_from_llm_config\":{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]},\"new_environ\":{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}},\"compositions\":[\"GitRepository\",\"ProjectRepo\",\"Path\"],\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"id": "metagpt/context.py:Context:config"}, {"id": "metagpt/context.py:Context:cost_manager"}, {"id": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"id": "metagpt/context.py:Context:git_repo"}, {"id": "{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]}"}, {"id": "metagpt/context.py:Context:kwargs"}, {"id": "{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}"}, {"id": "metagpt/context.py:Context:model_config"}, {"id": "metagpt/context.py:Context:repo"}, {"id": "{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]}"}, {"id": "metagpt/context.py:Context:src_workspace"}, {"id": "{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/context.py:Context:llm"}, {"id": "{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]}"}, {"id": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config"}, {"id": "{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"id": "metagpt/context.py:Context:new_environ"}, {"id": "{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}"}, {"id": "?:GitRepository"}, {"id": "?:ProjectRepo"}, {"id": "?:Path"}, {"id": "metagpt/context_mixin.py"}, {"id": "metagpt/context_mixin.py:ContextMixin"}, {"id": "{\"name\":\"ContextMixin\",\"package\":\"metagpt/context_mixin.py:ContextMixin\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"private_config\":{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]},\"private_context\":{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]},\"private_llm\":{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]},\"set_config\":{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}},\"compositions\":[\"Config\",\"Context\",\"BaseLLM\"],\"aggregations\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:config"}, {"id": "metagpt/context_mixin.py:ContextMixin:context"}, {"id": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:llm"}, {"id": "metagpt/context_mixin.py:ContextMixin:model_config"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_config"}, {"id": "{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_context"}, {"id": "{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"id": "{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_config"}, {"id": "{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_context"}, {"id": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_llm"}, {"id": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}"}, {"id": "?:Config"}, {"id": "?:Context"}, {"id": "metagpt/utils/cost_manager.py"}, {"id": "metagpt/utils/cost_manager.py:CostManager"}, {"id": "{\"name\":\"CostManager\",\"package\":\"metagpt/utils/cost_manager.py:CostManager\",\"attributes\":{\"max_budget\":{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]},\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]},\"get_total_completion_tokens\":{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]},\"get_total_cost\":{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]},\"get_total_prompt_tokens\":{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"id": "{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"id": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"id": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"id": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"id": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"id": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"id": "{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"id": "{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"id": "{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"id": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"id": "?:Costs"}, {"id": "metagpt/utils/cost_manager.py:Costs"}, {"id": "{\"name\":\"Costs\",\"package\":\"metagpt/utils/cost_manager.py:Costs\",\"attributes\":{\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"id": "metagpt/utils/custom_decoder.py"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"id": "{\"name\":\"CustomDecoder\",\"package\":\"metagpt/utils/custom_decoder.py:CustomDecoder\",\"attributes\":{\"parse_object\":{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]},\"parse_string\":{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]},\"scan_once\":{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}},\"methods\":{\"decode\":{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"id": "{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"id": "{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"id": "{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"id": "{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/customer_service.py"}, {"id": "metagpt/roles/customer_service.py:CustomerService"}, {"id": "{\"name\":\"CustomerService\",\"package\":\"metagpt/roles/customer_service.py:CustomerService\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"id": "metagpt/roles/customer_service.py:CustomerService:name"}, {"id": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"id": "metagpt/roles/customer_service.py:CustomerService:store"}, {"id": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"id": "?:BaseStore"}, {"id": "metagpt/tools/search_engine_ddg.py"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"package\":\"metagpt/tools/search_engine_ddg.py:DDGAPIWrapper\",\"attributes\":{\"ddgs\":{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}},\"compositions\":[\"DDGS\"],\"aggregations\":[\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"id": "{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"id": "{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"id": "{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}"}, {"id": "?:DDGS"}, {"id": "?:\\"}, {"id": "metagpt/strategy/tot.py:DFSSolver"}, {"id": "{\"name\":\"DFSSolver\",\"package\":\"metagpt/strategy/tot.py:DFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"id": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"id": "{\"name\":\"DataSource\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:DataSource\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"id": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/debug_error.py"}, {"id": "metagpt/actions/debug_error.py:DebugError"}, {"id": "{\"name\":\"DebugError\",\"package\":\"metagpt/actions/debug_error.py:DebugError\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"id": "metagpt/actions/debug_error.py:DebugError:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile"}, {"id": "{\"name\":\"DependencyFile\",\"package\":\"metagpt/utils/dependency_file.py:DependencyFile\",\"attributes\":{\"exists\":{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}},\"methods\":{\"delete_file\":{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]},\"load\":{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"update\":{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"id": "{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"id": "{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"id": "{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"id": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"id": "{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "?:Path\\"}, {"id": "metagpt/actions/design_api_review.py"}, {"id": "metagpt/actions/design_api_review.py:DesignReview"}, {"id": "{\"name\":\"DesignReview\",\"package\":\"metagpt/actions/design_api_review.py:DesignReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:i_context"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"id": "{\"name\":\"DiGraphRepository\",\"package\":\"metagpt/utils/di_graph_repository.py:DiGraphRepository\",\"attributes\":{\"pathname\":{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]},\"root\":{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"json\":{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"GraphRepository\",\"SPO\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"id": "{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"id": "{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"id": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"id": "{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"id": "{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"id": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"id": "?:GraphRepository"}, {"id": "?:SPO"}, {"id": "metagpt/utils/project_repo.py"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"id": "{\"name\":\"DocFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:DocFileRepositories\",\"attributes\":{\"class_view\":{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]},\"task\":{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:class_view"}, {"id": "{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change"}, {"id": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary"}, {"id": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo"}, {"id": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:prd"}, {"id": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:system_design"}, {"id": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:task"}, {"id": "{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}"}, {"id": "metagpt/utils/pycst.py"}, {"id": "metagpt/utils/pycst.py:DocstringCollector"}, {"id": "{\"name\":\"DocstringCollector\",\"package\":\"metagpt/utils/pycst.py:DocstringCollector\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.FunctionDef\",\"cst.Module\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"id": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"id": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"id": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"id": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"id": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"id": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"id": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"id": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"id": "?:..."}, {"id": "?:cst.SimpleStatementLine"}, {"id": "?:tuple"}, {"id": "?:cst.ClassDef"}, {"id": "?:cst.FunctionDef"}, {"id": "?:cst.Module"}, {"id": "?:bool\\"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer"}, {"id": "{\"name\":\"DocstringTransformer\",\"package\":\"metagpt/utils/pycst.py:DocstringTransformer\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\",\"cst.FunctionDef\",\"Module\",\"bool\\\\\",\"cst.Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"id": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"id": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"id": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"id": "?:cst.CSTNode"}, {"id": "?:Module"}, {"id": "metagpt/document.py"}, {"id": "metagpt/document.py:Document"}, {"id": "{\"name\":\"Document\",\"package\":\"metagpt/document.py:Document\",\"attributes\":{\"author\":{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"reviews\":{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"from_text\":{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/document.py:Document:author"}, {"id": "{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:content"}, {"id": "metagpt/document.py:Document:name"}, {"id": "metagpt/document.py:Document:path"}, {"id": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:reviews"}, {"id": "{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:status"}, {"id": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:from_path"}, {"id": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:from_text"}, {"id": "{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:persist"}, {"id": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Document:to_path"}, {"id": "{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/schema.py:Document"}, {"id": "{\"name\":\"Document\",\"package\":\"metagpt/schema.py:Document\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]},\"root_relative_path\":{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}},\"methods\":{\"get_meta\":{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/schema.py:Document:content"}, {"id": "metagpt/schema.py:Document:filename"}, {"id": "metagpt/schema.py:Document:root_path"}, {"id": "{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Document:root_relative_path"}, {"id": "{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Document:get_meta"}, {"id": "{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:DocumentStatus"}, {"id": "{\"name\":\"DocumentStatus\",\"package\":\"metagpt/document.py:DocumentStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document.py:DocumentStatus:name"}, {"id": "metagpt/schema.py:Documents"}, {"id": "{\"name\":\"Documents\",\"package\":\"metagpt/schema.py:Documents\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}},\"methods\":{\"from_iterable\":{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]},\"to_action_output\":{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}},\"compositions\":[\"Document\"],\"aggregations\":[\"Documents\",\"Iterable\",\"ActionOutput\"]}"}, {"id": "metagpt/schema.py:Documents:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:Documents:from_iterable"}, {"id": "{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]}"}, {"id": "metagpt/schema.py:Documents:to_action_output"}, {"id": "{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}"}, {"id": "?:Documents"}, {"id": "?:Iterable"}, {"id": "?:ActionOutput"}, {"id": "metagpt/repo_parser.py:DotClassAttribute"}, {"id": "{\"name\":\"DotClassAttribute\",\"package\":\"metagpt/repo_parser.py:DotClassAttribute\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"default_\":{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]},\"parse_compositions\":{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]},\"remove_white_spaces\":{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:compositions"}, {"id": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:default_"}, {"id": "{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:description"}, {"id": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:name"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:type_"}, {"id": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions"}, {"id": "{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces"}, {"id": "{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:sort"}, {"id": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"id": "?:DotClassAttribute"}, {"id": "metagpt/repo_parser.py:DotClassInfo"}, {"id": "{\"name\":\"DotClassInfo\",\"package\":\"metagpt/repo_parser.py:DotClassInfo\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"attributes\":{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"methods\":{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}},\"methods\":{\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[\"DotClassAttribute\",\"DotClassMethod\"],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:aggregations"}, {"id": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:attributes"}, {"id": "{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:compositions"}, {"id": "metagpt/repo_parser.py:DotClassInfo:methods"}, {"id": "{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:name"}, {"id": "metagpt/repo_parser.py:DotClassInfo:package"}, {"id": "{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:sort"}, {"id": "?:DotClassMethod"}, {"id": "metagpt/repo_parser.py:DotClassMethod"}, {"id": "{\"name\":\"DotClassMethod\",\"package\":\"metagpt/repo_parser.py:DotClassMethod\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"return_args\":{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}},\"compositions\":[\"DotClassAttribute\",\"DotReturn\"],\"aggregations\":[\"DotClassMethod\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:aggregations"}, {"id": "metagpt/repo_parser.py:DotClassMethod:args"}, {"id": "{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:description"}, {"id": "metagpt/repo_parser.py:DotClassMethod:name"}, {"id": "metagpt/repo_parser.py:DotClassMethod:return_args"}, {"id": "{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}"}, {"id": "?:DotReturn"}, {"id": "metagpt/repo_parser.py:DotClassRelationship"}, {"id": "{\"name\":\"DotClassRelationship\",\"package\":\"metagpt/repo_parser.py:DotClassRelationship\",\"attributes\":{\"dest\":{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]},\"src\":{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:dest"}, {"id": "{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:label"}, {"id": "{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:relationship"}, {"id": "{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:src"}, {"id": "{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotReturn"}, {"id": "{\"name\":\"DotReturn\",\"package\":\"metagpt/repo_parser.py:DotReturn\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotReturn\\\\\"]}"}, {"id": "metagpt/repo_parser.py:DotReturn:compositions"}, {"id": "metagpt/repo_parser.py:DotReturn:description"}, {"id": "metagpt/repo_parser.py:DotReturn:type_"}, {"id": "metagpt/repo_parser.py:DotReturn:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]}"}, {"id": "metagpt/repo_parser.py:DotReturn:sort"}, {"id": "?:DotReturn\\"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"id": "{\"name\":\"Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Embedding\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]},\"object\":{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"id": "{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"id": "{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"id": "{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py"}, {"id": "metagpt/roles/engineer.py:Engineer"}, {"id": "{\"name\":\"Engineer\",\"package\":\"metagpt/roles/engineer.py:Engineer\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"code_todos\":{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"n_borg\":{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]},\"n_summarize\":{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"next_todo_action\":{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"summarize_todos\":{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]},\"use_code_review\":{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:action_description"}, {"id": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"id": "{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:constraints"}, {"id": "metagpt/roles/engineer.py:Engineer:goal"}, {"id": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"id": "{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:n_summarize"}, {"id": "{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:name"}, {"id": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"id": "{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:profile"}, {"id": "metagpt/roles/engineer.py:Engineer:src_workspace"}, {"id": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"id": "{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"id": "{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"id": "{\"name\":\"EnronTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:EnronTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity"}, {"id": "{\"name\":\"Entity\",\"package\":\"metagpt/learn/skill_loader.py:Entity\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}},\"methods\":{},\"compositions\":[\"Skill\"],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity:name"}, {"id": "{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}"}, {"id": "?:Skill"}, {"id": "metagpt/environment.py"}, {"id": "metagpt/environment.py:Environment"}, {"id": "{\"name\":\"Environment\",\"package\":\"metagpt/environment.py:Environment\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"member_addrs\":{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"roles\":{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}},\"methods\":{\"add_role\":{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]},\"add_roles\":{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]},\"get_addresses\":{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]},\"get_role\":{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]},\"get_roles\":{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]},\"init_roles\":{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]},\"role_names\":{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}},\"compositions\":[\"Role\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\",\"Message\"]}"}, {"id": "metagpt/environment.py:Environment:context"}, {"id": "metagpt/environment.py:Environment:desc"}, {"id": "metagpt/environment.py:Environment:history"}, {"id": "{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]}"}, {"id": "metagpt/environment.py:Environment:is_idle"}, {"id": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"id": "metagpt/environment.py:Environment:member_addrs"}, {"id": "{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:model_config"}, {"id": "metagpt/environment.py:Environment:roles"}, {"id": "{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}"}, {"id": "metagpt/environment.py:Environment:add_role"}, {"id": "{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:add_roles"}, {"id": "{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]}"}, {"id": "metagpt/environment.py:Environment:archive"}, {"id": "{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:get_addresses"}, {"id": "{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:get_role"}, {"id": "{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:get_roles"}, {"id": "{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:init_roles"}, {"id": "{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/environment.py:Environment:role_names"}, {"id": "{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:set_addresses"}, {"id": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}"}, {"id": "?:Role"}, {"id": "?:SerializeAsAny"}, {"id": "metagpt/learn/skill_loader.py:Example"}, {"id": "{\"name\":\"Example\",\"package\":\"metagpt/learn/skill_loader.py:Example\",\"attributes\":{\"answer\":{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Example:answer"}, {"id": "{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Example:ask"}, {"id": "metagpt/actions/execute_task.py"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask"}, {"id": "{\"name\":\"ExecuteTask\",\"package\":\"metagpt/actions/execute_task.py:ExecuteTask\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore"}, {"id": "{\"name\":\"FaissStore\",\"package\":\"metagpt/document_store/faiss_store.py:FaissStore\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]},\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]},\"asearch\":{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"OpenAIEmbeddings\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"id": "{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"id": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"id": "{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"id": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"id": "{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"id": "{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"id": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"id": "?:OpenAIEmbeddings"}, {"id": "metagpt/utils/file.py"}, {"id": "metagpt/utils/file.py:File"}, {"id": "{\"name\":\"File\",\"package\":\"metagpt/utils/file.py:File\",\"attributes\":{\"CHUNK_SIZE\":{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}},\"methods\":{\"read\":{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"bytes\",\"Path\"]}"}, {"id": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"id": "{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/file.py:File:read"}, {"id": "{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"id": "metagpt/utils/file.py:File:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"id": "?:bytes"}, {"id": "metagpt/utils/file_repository.py"}, {"id": "metagpt/utils/file_repository.py:FileRepository"}, {"id": "{\"name\":\"FileRepository\",\"package\":\"metagpt/utils/file_repository.py:FileRepository\",\"attributes\":{\"all_files\":{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]},\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]},\"get_all\":{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]},\"get_change_dir_files\":{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]},\"get_changed_dependency\":{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"new_filename\":{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]},\"save_doc\":{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]},\"save_pdf\":{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"Document\\\\\",\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"id": "{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"id": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"id": "{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"id": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"id": "{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"id": "{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"id": "{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"id": "{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"id": "{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"id": "{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_pdf"}, {"id": "{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"id": "?:Document\\"}, {"id": "metagpt/provider/fireworks_api.py"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"id": "{\"name\":\"FireworksCostManager\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"model_grade_token_costs\":{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"id": "{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"id": "{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"id": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"id": "{\"name\":\"FireworksLLM\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksLLM\",\"attributes\":{\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"id": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"id": "metagpt/actions/fix_bug.py"}, {"id": "metagpt/actions/fix_bug.py:FixBug"}, {"id": "{\"name\":\"FixBug\",\"package\":\"metagpt/actions/fix_bug.py:FixBug\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/fix_bug.py:FixBug:name"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"package\":\"metagpt/tools/prompt_writer.py:GPTPromptGenerator\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]},\"gen_chatbot_style\":{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]},\"gen_instruction_style\":{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]},\"gen_query_style\":{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"id": "{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"id": "{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"id": "{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiGenerativeModel\",\"attributes\":{},\"methods\":{\"count_tokens\":{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]},\"count_tokens_async\":{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}},\"compositions\":[],\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"id": "{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"id": "{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"id": "?:content_types.ContentsType"}, {"id": "?:glm.CountTokensResponse"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"id": "{\"name\":\"GeminiLLM\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"aget_usage\":{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"id": "{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"id": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"id": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"id": "?:GenerateContentResponse"}, {"id": "metagpt/provider/general_api_requestor.py"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"package\":\"metagpt/provider/general_api_requestor.py:GeneralAPIRequestor\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/generate_questions.py"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"id": "{\"name\":\"GenerateQuestions\",\"package\":\"metagpt/actions/generate_questions.py:GenerateQuestions\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/invoice_ocr.py"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"id": "{\"name\":\"GenerateTable\",\"package\":\"metagpt/actions/invoice_ocr.py:GenerateTable\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb\",\"attributes\":{\"domain\":{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]},\"ret\":{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]},\"spark_api_key\":{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]},\"spark_api_secret\":{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]},\"spark_appid\":{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]},\"text\":{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}},\"methods\":{\"gen_params\":{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]},\"on_close\":{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close(ws, one, two)\",\"aggregations\":[]},\"on_error\":{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]},\"on_message\":{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]},\"on_open\":{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"send\":{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"id": "{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"id": "{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"id": "{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"id": "{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"id": "{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"id": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"id": "{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"id": "{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"id": "{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close(ws, one, two)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"id": "{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"id": "{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"id": "{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"id": "{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository"}, {"id": "{\"name\":\"GitRepository\",\"package\":\"metagpt/utils/git_repository.py:GitRepository\",\"attributes\":{\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"is_valid\":{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"add_change\":{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]},\"commit\":{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]},\"delete_repository\":{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]},\"filter_gitignore\":{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]},\"get_files\":{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]},\"is_git_dir\":{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]},\"new_file_repository\":{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]},\"open\":{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]},\"rename_root\":{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"DependencyFile\",\"FileRepository\",\"Path\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"id": "{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:status"}, {"id": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"id": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"id": "{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"id": "{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"id": "{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"id": "{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"id": "{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"id": "{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"id": "{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"id": "{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"id": "{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:open"}, {"id": "{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"id": "{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}"}, {"id": "?:DependencyFile"}, {"id": "?:FileRepository"}, {"id": "metagpt/tools/search_engine_googleapi.py"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"package\":\"metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper\",\"attributes\":{\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"google_api_client\":{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]},\"google_api_key\":{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]},\"google_cse_id\":{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"check_google_api_key\":{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]},\"check_google_cse_id\":{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"id": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"id": "{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key"}, {"id": "{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id"}, {"id": "{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"id": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key"}, {"id": "{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id"}, {"id": "{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"id": "?:futures.Executor"}, {"id": "?:asyncio.AbstractEventLoop"}, {"id": "metagpt/utils/graph_repository.py"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"id": "{\"name\":\"GraphKeyword\",\"package\":\"metagpt/utils/graph_repository.py:GraphKeyword\",\"attributes\":{\"CLASS\":{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]},\"CLASS_METHOD\":{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]},\"CLASS_PROPERTY\":{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]},\"FUNCTION\":{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]},\"GLOBAL_VARIABLE\":{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]},\"HAS_CLASS\":{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]},\"HAS_CLASS_METHOD\":{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]},\"HAS_CLASS_PROPERTY\":{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]},\"HAS_CLASS_USE_CASE\":{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]},\"HAS_CLASS_VIEW\":{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]},\"HAS_DETAIL\":{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]},\"HAS_FUNCTION\":{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]},\"HAS_PAGE_INFO\":{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]},\"HAS_PARTICIPANT\":{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW\":{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]},\"IS\":{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]},\"IS_AGGREGATE_OF\":{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]},\"IS_COMPOSITE_OF\":{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]},\"NULL\":{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]},\"OF\":{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]},\"ON\":{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]},\"SOURCE_CODE\":{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"id": "{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD"}, {"id": "{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"id": "{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"id": "{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"id": "{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"id": "{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD"}, {"id": "{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"id": "{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE"}, {"id": "{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"id": "{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL"}, {"id": "{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"id": "{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"id": "{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT"}, {"id": "{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"id": "{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"id": "{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF"}, {"id": "{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF"}, {"id": "{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"id": "{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"id": "{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"id": "{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"id": "{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository"}, {"id": "{\"name\":\"GraphRepository\",\"package\":\"metagpt/utils/graph_repository.py:GraphRepository\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"rebuild_composition_relationship\":{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]},\"update_graph_db_with_class_relationship_views\":{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]},\"update_graph_db_with_class_views\":{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]},\"update_graph_db_with_file_info\":{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}},\"compositions\":[],\"aggregations\":[\"GraphRepository\",\"SPO\",\"DotClassRelationship\",\"DotClassInfo\",\"RepoFileInfo\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"id": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship"}, {"id": "{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"id": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"id": "{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"id": "{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"id": "{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}"}, {"id": "?:DotClassRelationship"}, {"id": "?:DotClassInfo"}, {"id": "?:RepoFileInfo"}, {"id": "metagpt/utils/human_interaction.py"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction"}, {"id": "{\"name\":\"HumanInteraction\",\"package\":\"metagpt/utils/human_interaction.py:HumanInteraction\",\"attributes\":{\"stop_list\":{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}},\"methods\":{\"check_input_type\":{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]},\"input_num_until_valid\":{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]},\"input_until_valid\":{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]},\"interact_with_instruct_content\":{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]},\"multilines_input\":{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[\"tuple\"],\"aggregations\":[\"Type\",\"BaseModel\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list"}, {"id": "{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type"}, {"id": "{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid"}, {"id": "{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid"}, {"id": "{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content"}, {"id": "{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input"}, {"id": "{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py"}, {"id": "metagpt/provider/human_provider.py:HumanProvider"}, {"id": "{\"name\":\"HumanProvider\",\"package\":\"metagpt/provider/human_provider.py:HumanProvider\",\"attributes\":{\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:system_prompt"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"id": "{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"id": "{\"name\":\"IFlyTekTTS\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTS\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}},\"methods\":{\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"id": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]},\"sid\":{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AudioData\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"id": "{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"id": "{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"id": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"id": "{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}"}, {"id": "?:AudioData"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"id": "metagpt/tools/metagpt_text_to_image.py"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"id": "{\"name\":\"ImageResult\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult\",\"attributes\":{\"images\":{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"id": "{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"id": "{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument"}, {"id": "{\"name\":\"IndexableDocument\",\"package\":\"metagpt/document.py:IndexableDocument\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]},\"get_docs_and_metadatas\":{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}},\"compositions\":[\"pd.DataFrame\"],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:IndexableDocument:content_col"}, {"id": "{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument:data"}, {"id": "{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/document.py:IndexableDocument:meta_col"}, {"id": "{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument:model_config"}, {"id": "metagpt/document.py:IndexableDocument:from_path"}, {"id": "{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"id": "{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}"}, {"id": "?:pd.DataFrame"}, {"id": "metagpt/roles/invoice_ocr_assistant.py"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"id": "{\"name\":\"InvoiceData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceData\",\"attributes\":{\"invoice_data\":{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"id": "{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"id": "{\"name\":\"InvoiceOCR\",\"package\":\"metagpt/actions/invoice_ocr.py:InvoiceOCR\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"orc_data\":{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]},\"origin_query\":{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"id": "{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"id": "{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"id": "{\"name\":\"InvoicePath\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoicePath\",\"attributes\":{\"file_path\":{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"id": "{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/configs/llm_config.py"}, {"id": "metagpt/configs/llm_config.py:LLMConfig"}, {"id": "{\"name\":\"LLMConfig\",\"package\":\"metagpt/configs/llm_config.py:LLMConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]},\"best_of\":{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]},\"calc_usage\":{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]},\"domain\":{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]},\"frequency_penalty\":{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]},\"logprobs\":{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]},\"max_token\":{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"n\":{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]},\"presence_penalty\":{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"repetition_penalty\":{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]},\"stop\":{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]},\"stream\":{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]},\"temperature\":{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]},\"timeout\":{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]},\"top_k\":{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]},\"top_logprobs\":{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]},\"top_p\":{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}},\"methods\":{\"check_llm_key\":{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_key"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"id": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_version"}, {"id": "{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:base_url"}, {"id": "{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:best_of"}, {"id": "{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:calc_usage"}, {"id": "{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:domain"}, {"id": "{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty"}, {"id": "{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:logprobs"}, {"id": "{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:max_token"}, {"id": "{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:model"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:n"}, {"id": "{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty"}, {"id": "{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:proxy"}, {"id": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty"}, {"id": "{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:stop"}, {"id": "{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:stream"}, {"id": "{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:temperature"}, {"id": "{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:timeout"}, {"id": "{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_k"}, {"id": "{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs"}, {"id": "{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_p"}, {"id": "{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key"}, {"id": "{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/llm_provider_registry.py"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"package\":\"metagpt/provider/llm_provider_registry.py:LLMProviderRegistry\",\"attributes\":{\"providers\":{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}},\"methods\":{\"get_provider\":{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]},\"register\":{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"LLMType\"]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"id": "{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"id": "{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"id": "{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}"}, {"id": "?:LLMType"}, {"id": "metagpt/configs/llm_config.py:LLMType"}, {"id": "{\"name\":\"LLMType\",\"package\":\"metagpt/configs/llm_config.py:LLMType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMType:name"}, {"id": "metagpt/document_store/lancedb_store.py"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"id": "{\"name\":\"LanceStore\",\"package\":\"metagpt/document_store/lancedb_store.py:LanceStore\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"table\":{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"drop\":{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\",\"LanceTable\",\"RemoteTable\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"id": "{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"id": "{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"id": "{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}"}, {"id": "?:LanceDBConnection"}, {"id": "?:RemoteDBConnection"}, {"id": "?:LanceTable"}, {"id": "?:RemoteTable"}, {"id": "metagpt/document_store/base_store.py:LocalStore"}, {"id": "{\"name\":\"LocalStore\",\"package\":\"metagpt/document_store/base_store.py:LocalStore\",\"attributes\":{\"cache_dir\":{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"fname\":{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]},\"raw_data_path\":{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"id": "{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"id": "{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"id": "{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:store"}, {"id": "metagpt/memory/longterm_memory.py"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"id": "{\"name\":\"LongTermMemory\",\"package\":\"metagpt/memory/longterm_memory.py:LongTermMemory\",\"attributes\":{\"memory_storage\":{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_from_recover\":{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}},\"compositions\":[\"RoleContext\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"id": "{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"id": "{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"id": "{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"id": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"id": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"id": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}"}, {"id": "?:RoleContext"}, {"id": "metagpt/strategy/tot.py:MCTSSolver"}, {"id": "{\"name\":\"MCTSSolver\",\"package\":\"metagpt/strategy/tot.py:MCTSSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"id": "{\"name\":\"MeilisearchEngine\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}},\"methods\":{\"add_documents\":{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]},\"set_index\":{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}},\"compositions\":[\"Client\"],\"aggregations\":[\"DataSource\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"id": "{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"id": "{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"id": "{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}"}, {"id": "?:Client"}, {"id": "?:DataSource"}, {"id": "metagpt/memory/memory.py"}, {"id": "metagpt/memory/memory.py:Memory"}, {"id": "{\"name\":\"Memory\",\"package\":\"metagpt/memory/memory.py:Memory\",\"attributes\":{\"ignore_id\":{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]},\"storage\":{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"add_batch\":{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"count\":{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"delete_newest\":{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_action\":{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_actions\":{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_content\":{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_role\":{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]},\"try_remember\":{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\"]}"}, {"id": "metagpt/memory/memory.py:Memory:ignore_id"}, {"id": "{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory.py:Memory:index"}, {"id": "{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]}"}, {"id": "metagpt/memory/memory.py:Memory:storage"}, {"id": "{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}"}, {"id": "metagpt/memory/memory.py:Memory:add"}, {"id": "metagpt/memory/memory.py:Memory:add_batch"}, {"id": "{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]}"}, {"id": "metagpt/memory/memory.py:Memory:clear"}, {"id": "metagpt/memory/memory.py:Memory:count"}, {"id": "{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]}"}, {"id": "metagpt/memory/memory.py:Memory:delete"}, {"id": "metagpt/memory/memory.py:Memory:delete_newest"}, {"id": "{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:find_news"}, {"id": "metagpt/memory/memory.py:Memory:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_action"}, {"id": "{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"id": "{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_content"}, {"id": "{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_role"}, {"id": "{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:try_remember"}, {"id": "{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "?:DefaultDict"}, {"id": "metagpt/memory/memory_storage.py"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"id": "{\"name\":\"MemoryStorage\",\"package\":\"metagpt/memory/memory_storage.py:MemoryStorage\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"is_initialized\":{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]},\"mem_ttl\":{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]},\"role_mem_path\":{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]},\"clean\":{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]},\"search_dissimilar\":{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"OpenAIEmbeddings\",\"Path\",\"FAISS\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"id": "{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"id": "{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"id": "{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"id": "{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"id": "{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"id": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"id": "{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"id": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"id": "{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "?:FAISS"}, {"id": "metagpt/configs/mermaid_config.py"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig"}, {"id": "{\"name\":\"MermaidConfig\",\"package\":\"metagpt/configs/mermaid_config.py:MermaidConfig\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:path"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config"}, {"id": "metagpt/schema.py:Message"}, {"id": "{\"name\":\"Message\",\"package\":\"metagpt/schema.py:Message\",\"attributes\":{\"cause_by\":{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"id\":{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]},\"send_to\":{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]},\"sent_from\":{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}},\"methods\":{\"check_cause_by\":{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]},\"check_id\":{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]},\"check_instruct_content\":{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]},\"check_send_to\":{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]},\"check_sent_from\":{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]},\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]},\"ser_instruct_content\":{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:cause_by"}, {"id": "{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:content"}, {"id": "metagpt/schema.py:Message:id"}, {"id": "{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:instruct_content"}, {"id": "{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:role"}, {"id": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:send_to"}, {"id": "{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:sent_from"}, {"id": "{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:check_cause_by"}, {"id": "{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_id"}, {"id": "{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_instruct_content"}, {"id": "{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:check_send_to"}, {"id": "{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_sent_from"}, {"id": "{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:dump"}, {"id": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:ser_instruct_content"}, {"id": "{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:to_dict"}, {"id": "{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:MessageQueue"}, {"id": "{\"name\":\"MessageQueue\",\"package\":\"metagpt/schema.py:MessageQueue\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"empty\":{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]},\"pop\":{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"pop_all\":{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]},\"push\":{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"MessageQueue\",\"Message\\\\\",\"Message\"]}"}, {"id": "metagpt/schema.py:MessageQueue:model_config"}, {"id": "metagpt/schema.py:MessageQueue:dump"}, {"id": "metagpt/schema.py:MessageQueue:empty"}, {"id": "{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:MessageQueue:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]}"}, {"id": "metagpt/schema.py:MessageQueue:pop"}, {"id": "{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"id": "metagpt/schema.py:MessageQueue:pop_all"}, {"id": "{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/schema.py:MessageQueue:push"}, {"id": "{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "?:MessageQueue"}, {"id": "?:Message\\"}, {"id": "metagpt/roles/assistant.py:MessageType"}, {"id": "{\"name\":\"MessageType\",\"package\":\"metagpt/roles/assistant.py:MessageType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:MessageType:name"}, {"id": "metagpt/provider/metagpt_api.py"}, {"id": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"id": "{\"name\":\"MetaGPTLLM\",\"package\":\"metagpt/provider/metagpt_api.py:MetaGPTLLM\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image\",\"attributes\":{\"model_url\":{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}},\"methods\":{\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"id": "{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"id": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"id": "{\"name\":\"MethodSelect\",\"package\":\"metagpt/strategy/tot_schema.py:MethodSelect\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"id": "metagpt/tools/moderation.py"}, {"id": "metagpt/tools/moderation.py:Moderation"}, {"id": "{\"name\":\"Moderation\",\"package\":\"metagpt/tools/moderation.py:Moderation\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"amoderation_with_categories\":{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]},\"handle_moderation_results\":{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:llm"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"id": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"id": "{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"id": "{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException"}, {"id": "{\"name\":\"NoMoneyException\",\"package\":\"metagpt/utils/common.py:NoMoneyException\",\"attributes\":{\"amount\":{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException:amount"}, {"id": "{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException:message"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"id": "{\"name\":\"OCRResults\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:OCRResults\",\"attributes\":{\"ocr_result\":{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"id": "{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"id": "{\"name\":\"OllamaLLM\",\"package\":\"metagpt/provider/ollama_api.py:OllamaLLM\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"http_method\":{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"suffix_url\":{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"id": "{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"id": "{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"id": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM"}, {"id": "{\"name\":\"OpenAILLM\",\"package\":\"metagpt/provider/openai_api.py:OpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]},\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"aspeech_to_text\":{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]},\"atext_to_speech\":{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\",\"ChatCompletion\",\"Costs\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"id": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text"}, {"id": "{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech"}, {"id": "{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"id": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"id": "?:ChatCompletion"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"id": "{\"name\":\"OpenAIResponse\",\"package\":\"metagpt/provider/general_api_base.py:OpenAIResponse\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},\"operation_location\":{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]},\"request_id\":{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]},\"response_ms\":{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]},\"retry_after\":{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"id": "{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"id": "{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"id": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"id": "{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"id": "{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"id": "{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}},\"methods\":{\"text_2_embedding\":{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"id": "{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"id": "{\"name\":\"OpenAIText2Image\",\"package\":\"metagpt/tools/openai_text_to_image.py:OpenAIText2Image\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"get_image_data\":{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]},\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"id": "{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"id": "metagpt/provider/open_llm_api.py"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"id": "{\"name\":\"OpenLLM\",\"package\":\"metagpt/provider/open_llm_api.py:OpenLLM\",\"attributes\":{},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"id": "metagpt/utils/common.py:OutputParser"}, {"id": "{\"name\":\"OutputParser\",\"package\":\"metagpt/utils/common.py:OutputParser\",\"attributes\":{},\"methods\":{\"extract_content\":{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]},\"extract_struct\":{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]},\"parse_data\":{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]},\"parse_data_with_mapping\":{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]},\"parse_python_code\":{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"type\"]}"}, {"id": "metagpt/utils/common.py:OutputParser:extract_content"}, {"id": "{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"id": "{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"id": "metagpt/utils/common.py:OutputParser:parse_code"}, {"id": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data"}, {"id": "{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"id": "{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"id": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"id": "{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_str"}, {"id": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}"}, {"id": "?:type"}, {"id": "metagpt/learn/skill_loader.py:Parameter"}, {"id": "{\"name\":\"Parameter\",\"package\":\"metagpt/learn/skill_loader.py:Parameter\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Parameter:description"}, {"id": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Parameter:type"}, {"id": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"package\":\"metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[\"Literal\\\\\",\"dict\\\\\"],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"id": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"id": "?:Literal\\"}, {"id": "?:dict\\"}, {"id": "?:WebPage\\"}, {"id": "?:WebPage"}, {"id": "metagpt/actions/prepare_documents.py"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"id": "{\"name\":\"PrepareDocuments\",\"package\":\"metagpt/actions/prepare_documents.py:PrepareDocuments\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:config"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_interview.py"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"id": "{\"name\":\"PrepareInterview\",\"package\":\"metagpt/actions/prepare_interview.py:PrepareInterview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/product_manager.py"}, {"id": "metagpt/roles/product_manager.py:ProductManager"}, {"id": "{\"name\":\"ProductManager\",\"package\":\"metagpt/roles/product_manager.py:ProductManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"todo_action\":{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"id": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"id": "metagpt/roles/product_manager.py:ProductManager:name"}, {"id": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"id": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"id": "{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/project_manager.py"}, {"id": "metagpt/roles/project_manager.py:ProjectManager"}, {"id": "{\"name\":\"ProjectManager\",\"package\":\"metagpt/roles/project_manager.py:ProjectManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo"}, {"id": "{\"name\":\"ProjectRepo\",\"package\":\"metagpt/utils/project_repo.py:ProjectRepo\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]},\"resources\":{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]},\"src_relative_path\":{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]},\"srcs\":{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]},\"test_outputs\":{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]},\"tests\":{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"code_files_exists\":{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]},\"with_src_path\":{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:git_repo"}, {"id": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:requirement"}, {"id": "{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"id": "{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path"}, {"id": "{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:srcs"}, {"id": "{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"id": "{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"id": "{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:workdir"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists"}, {"id": "{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path"}, {"id": "{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"id": "metagpt/roles/prompt.py"}, {"id": "metagpt/roles/prompt.py:PromptString"}, {"id": "{\"name\":\"PromptString\",\"package\":\"metagpt/roles/prompt.py:PromptString\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/prompt.py:PromptString:name"}, {"id": "metagpt/roles/qa_engineer.py"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"id": "{\"name\":\"QaEngineer\",\"package\":\"metagpt/roles/qa_engineer.py:QaEngineer\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"test_round\":{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]},\"test_round_allowed\":{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"id": "{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"id": "{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"id": "{\"name\":\"QdrantConnection\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantConnection\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"id": "{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"id": "{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"id": "{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"id": "{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"id": "{\"name\":\"QdrantStore\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]},\"create_collection\":{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]},\"delete_collection\":{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]},\"has_collection\":{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"QdrantClient\"],\"aggregations\":[\"PointStruct\",\"VectorParams\",\"Filter\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"id": "{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"id": "{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"id": "{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"id": "{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"id": "?:QdrantClient"}, {"id": "?:PointStruct"}, {"id": "?:VectorParams"}, {"id": "?:Filter"}, {"id": "metagpt/actions/rebuild_class_view.py"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"id": "{\"name\":\"RebuildClassView\",\"package\":\"metagpt/actions/rebuild_class_view.py:RebuildClassView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db"}, {"id": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"id": "{\"name\":\"RebuildSequenceView\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"parse_participant\":{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant"}, {"id": "{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"id": "metagpt/utils/redis.py"}, {"id": "metagpt/utils/redis.py:Redis"}, {"id": "{\"name\":\"Redis\",\"package\":\"metagpt/utils/redis.py:Redis\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}},\"methods\":{\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\"],\"aggregations\":[\"bytes\\\\\"]}"}, {"id": "metagpt/utils/redis.py:Redis:config"}, {"id": "{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"id": "metagpt/utils/redis.py:Redis:close"}, {"id": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/redis.py:Redis:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]}"}, {"id": "metagpt/utils/redis.py:Redis:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"id": "?:bytes\\"}, {"id": "metagpt/configs/redis_config.py"}, {"id": "metagpt/configs/redis_config.py:RedisConfig"}, {"id": "{\"name\":\"RedisConfig\",\"package\":\"metagpt/configs/redis_config.py:RedisConfig\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]},\"password\":{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]},\"username\":{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}},\"methods\":{\"to_kwargs\":{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]},\"to_url\":{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:db"}, {"id": "{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:host"}, {"id": "{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:password"}, {"id": "{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:port"}, {"id": "{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:username"}, {"id": "{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs"}, {"id": "{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:to_url"}, {"id": "{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/repair_llm_raw_output.py"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"id": "{\"name\":\"RepairType\",\"package\":\"metagpt/utils/repair_llm_raw_output.py:RepairType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"id": "{\"name\":\"ReplyData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:ReplyData\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"id": "{\"name\":\"ReplyQuestion\",\"package\":\"metagpt/actions/invoice_ocr.py:ReplyQuestion\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Repo"}, {"id": "{\"name\":\"Repo\",\"package\":\"metagpt/document.py:Repo\",\"attributes\":{\"assets\":{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"codes\":{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"docs\":{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"eda\":{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]},\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]},\"get_text_documents\":{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}},\"compositions\":[\"Document\",\"Path\"],\"aggregations\":[\"RepoMetadata\"]}"}, {"id": "metagpt/document.py:Repo:assets"}, {"id": "{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:codes"}, {"id": "{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:name"}, {"id": "metagpt/document.py:Repo:path"}, {"id": "metagpt/document.py:Repo:eda"}, {"id": "{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]}"}, {"id": "metagpt/document.py:Repo:from_path"}, {"id": "metagpt/document.py:Repo:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:Repo:get_text_documents"}, {"id": "{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:Repo:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Repo:to_path"}, {"id": "{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}"}, {"id": "?:RepoMetadata"}, {"id": "metagpt/repo_parser.py:RepoFileInfo"}, {"id": "{\"name\":\"RepoFileInfo\",\"package\":\"metagpt/repo_parser.py:RepoFileInfo\",\"attributes\":{\"classes\":{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]},\"file\":{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]},\"functions\":{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]},\"globals\":{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]},\"page_info\":{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"id": "{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"id": "{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"id": "{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"id": "{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"id": "{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata"}, {"id": "{\"name\":\"RepoMetadata\",\"package\":\"metagpt/document.py:RepoMetadata\",\"attributes\":{\"n_chars\":{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]},\"n_docs\":{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"symbols\":{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:n_chars"}, {"id": "{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:n_docs"}, {"id": "{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:name"}, {"id": "metagpt/document.py:RepoMetadata:symbols"}, {"id": "{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser"}, {"id": "{\"name\":\"RepoParser\",\"package\":\"metagpt/repo_parser.py:RepoParser\",\"attributes\":{\"base_directory\":{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"extract_class_and_function_info\":{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]},\"generate_dataframe_structure\":{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]},\"generate_json_structure\":{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]},\"generate_structure\":{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]},\"generate_symbols\":{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]},\"node_to_str\":{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]},\"rebuild_class_views\":{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"RepoFileInfo\",\"CodeBlockInfo\\\\\",\"str\\\\\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"id": "{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"id": "{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"id": "{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"id": "{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"id": "{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"id": "{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"id": "{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"id": "{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "?:CodeBlockInfo\\"}, {"id": "metagpt/roles/researcher.py"}, {"id": "metagpt/roles/researcher.py:Report"}, {"id": "{\"name\":\"Report\",\"package\":\"metagpt/roles/researcher.py:Report\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"links\":{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]},\"summaries\":{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"tuple\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/researcher.py:Report:content"}, {"id": "metagpt/roles/researcher.py:Report:links"}, {"id": "{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]}"}, {"id": "metagpt/roles/researcher.py:Report:summaries"}, {"id": "{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]}"}, {"id": "metagpt/roles/researcher.py:Report:topic"}, {"id": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/researcher.py:Researcher"}, {"id": "{\"name\":\"Researcher\",\"package\":\"metagpt/roles/researcher.py:Researcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"research_system_text\":{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]},\"write_report\":{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\",\"Action\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:constraints"}, {"id": "metagpt/roles/researcher.py:Researcher:goal"}, {"id": "metagpt/roles/researcher.py:Researcher:language"}, {"id": "metagpt/roles/researcher.py:Researcher:name"}, {"id": "metagpt/roles/researcher.py:Researcher:profile"}, {"id": "metagpt/roles/researcher.py:Researcher:react"}, {"id": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"id": "{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:write_report"}, {"id": "{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}"}, {"id": "?:Action"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"id": "{\"name\":\"ResourceFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:ResourceFileRepositories\",\"attributes\":{\"api_spec_and_task\":{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"competitive_analysis\":{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]},\"data_api_design\":{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"sd_output\":{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]},\"seq_flow\":{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task"}, {"id": "{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis"}, {"id": "{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design"}, {"id": "{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output"}, {"id": "{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow"}, {"id": "{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"id": "{\"name\":\"ResultEmbedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"usage\":{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Embedding\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"id": "{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"id": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"id": "{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}"}, {"id": "?:Embedding"}, {"id": "metagpt/learn/skill_loader.py:Returns"}, {"id": "{\"name\":\"Returns\",\"package\":\"metagpt/learn/skill_loader.py:Returns\",\"attributes\":{\"format\":{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Returns:format"}, {"id": "{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Returns:type"}, {"id": "metagpt/actions/action_node.py:ReviewMode"}, {"id": "{\"name\":\"ReviewMode\",\"package\":\"metagpt/actions/action_node.py:ReviewMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ReviewMode:name"}, {"id": "metagpt/actions/action_node.py:ReviseMode"}, {"id": "{\"name\":\"ReviseMode\",\"package\":\"metagpt/actions/action_node.py:ReviseMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ReviseMode:name"}, {"id": "metagpt/roles/role.py"}, {"id": "metagpt/roles/role.py:Role"}, {"id": "{\"name\":\"Role\",\"package\":\"metagpt/roles/role.py:Role\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"actions\":{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]},\"addresses\":{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"is_human\":{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"latest_observed_msg\":{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"project_repo\":{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]},\"recovered\":{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"states\":{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]},\"check_addresses\":{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]},\"get_memories\":{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]},\"is_watch\":{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]},\"put_message\":{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]},\"pydantic_rebuild_model\":{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]},\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"set_action\":{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]},\"set_actions\":{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]},\"set_env\":{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]},\"set_todo\":{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}},\"compositions\":[\"Action\",\"SerializeAsAny\",\"Message\"],\"aggregations\":[\"ActionOutput\",\"Message\\\\\",\"Type\",\"Environment\"]}"}, {"id": "metagpt/roles/role.py:Role:action_description"}, {"id": "metagpt/roles/role.py:Role:actions"}, {"id": "{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]}"}, {"id": "metagpt/roles/role.py:Role:addresses"}, {"id": "{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:constraints"}, {"id": "metagpt/roles/role.py:Role:desc"}, {"id": "metagpt/roles/role.py:Role:git_repo"}, {"id": "metagpt/roles/role.py:Role:goal"}, {"id": "metagpt/roles/role.py:Role:is_human"}, {"id": "{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:is_idle"}, {"id": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"id": "{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/roles/role.py:Role:llm"}, {"id": "metagpt/roles/role.py:Role:model_config"}, {"id": "metagpt/roles/role.py:Role:name"}, {"id": "metagpt/roles/role.py:Role:profile"}, {"id": "metagpt/roles/role.py:Role:project_name"}, {"id": "metagpt/roles/role.py:Role:project_path"}, {"id": "metagpt/roles/role.py:Role:project_repo"}, {"id": "{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:prompt_schema"}, {"id": "metagpt/roles/role.py:Role:rc"}, {"id": "{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:recovered"}, {"id": "{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:role_id"}, {"id": "{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:src_workspace"}, {"id": "metagpt/roles/role.py:Role:states"}, {"id": "{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:todo"}, {"id": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:act"}, {"id": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]}"}, {"id": "metagpt/roles/role.py:Role:check_addresses"}, {"id": "{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:get_memories"}, {"id": "{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/role.py:Role:is_watch"}, {"id": "{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:put_message"}, {"id": "{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:pydantic_rebuild_model"}, {"id": "{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:react"}, {"id": "metagpt/roles/role.py:Role:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"id": "metagpt/roles/role.py:Role:set_action"}, {"id": "{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:set_actions"}, {"id": "{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]}"}, {"id": "metagpt/roles/role.py:Role:set_addresses"}, {"id": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:set_env"}, {"id": "{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]}"}, {"id": "metagpt/roles/role.py:Role:set_todo"}, {"id": "{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:think"}, {"id": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}"}, {"id": "?:Environment"}, {"id": "metagpt/roles/role.py:RoleContext"}, {"id": "{\"name\":\"RoleContext\",\"package\":\"metagpt/roles/role.py:RoleContext\",\"attributes\":{\"env\":{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"important_memory\":{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]},\"max_react_loop\":{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_buffer\":{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]},\"news\":{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]},\"react_mode\":{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]},\"state\":{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]},\"watch\":{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}},\"methods\":{\"check\":{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check(role_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"Type\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:env"}, {"id": "{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:history"}, {"id": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:important_memory"}, {"id": "{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"id": "{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:memory"}, {"id": "metagpt/roles/role.py:RoleContext:model_config"}, {"id": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"id": "{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:news"}, {"id": "{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]}"}, {"id": "metagpt/roles/role.py:RoleContext:react_mode"}, {"id": "{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:state"}, {"id": "{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:todo"}, {"id": "metagpt/roles/role.py:RoleContext:watch"}, {"id": "{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:check"}, {"id": "{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check(role_id: str)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleReactMode"}, {"id": "{\"name\":\"RoleReactMode\",\"package\":\"metagpt/roles/role.py:RoleReactMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"values\":{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleReactMode:name"}, {"id": "metagpt/roles/role.py:RoleReactMode:values"}, {"id": "{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}"}, {"id": "metagpt/actions/run_code.py"}, {"id": "metagpt/actions/run_code.py:RunCode"}, {"id": "{\"name\":\"RunCode\",\"package\":\"metagpt/actions/run_code.py:RunCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]},\"run_script\":{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]},\"run_text\":{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"RunCodeResult\"]}"}, {"id": "metagpt/actions/run_code.py:RunCode:i_context"}, {"id": "metagpt/actions/run_code.py:RunCode:name"}, {"id": "metagpt/actions/run_code.py:RunCode:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]}"}, {"id": "metagpt/actions/run_code.py:RunCode:run_script"}, {"id": "{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/run_code.py:RunCode:run_text"}, {"id": "{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}"}, {"id": "?:RunCodeResult"}, {"id": "metagpt/schema.py:RunCodeContext"}, {"id": "{\"name\":\"RunCodeContext\",\"package\":\"metagpt/schema.py:RunCodeContext\",\"attributes\":{\"additional_python_paths\":{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]},\"code_filename\":{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]},\"command\":{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]},\"mode\":{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]},\"output\":{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]},\"output_filename\":{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]},\"test_code\":{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]},\"test_filename\":{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]},\"working_directory\":{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"id": "{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:code"}, {"id": "{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:code_filename"}, {"id": "{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:command"}, {"id": "{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:mode"}, {"id": "{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:output"}, {"id": "{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:output_filename"}, {"id": "{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:test_code"}, {"id": "{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:test_filename"}, {"id": "{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:working_directory"}, {"id": "{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult"}, {"id": "{\"name\":\"RunCodeResult\",\"package\":\"metagpt/schema.py:RunCodeResult\",\"attributes\":{\"stderr\":{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]},\"stdout\":{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]},\"summary\":{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:stderr"}, {"id": "{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:stdout"}, {"id": "{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:summary"}, {"id": "{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/s3.py"}, {"id": "metagpt/utils/s3.py:S3"}, {"id": "{\"name\":\"S3\",\"package\":\"metagpt/utils/s3.py:S3\",\"attributes\":{\"auth_config\":{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"session\":{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}},\"methods\":{\"cache\":{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]},\"download_file\":{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]},\"get_object\":{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]},\"get_object_url\":{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]},\"upload_file\":{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}},\"compositions\":[\"Session\"],\"aggregations\":[\"bytes\"]}"}, {"id": "metagpt/utils/s3.py:S3:auth_config"}, {"id": "{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]}"}, {"id": "metagpt/utils/s3.py:S3:config"}, {"id": "metagpt/utils/s3.py:S3:session"}, {"id": "{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}"}, {"id": "metagpt/utils/s3.py:S3:cache"}, {"id": "{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:download_file"}, {"id": "{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:get_object"}, {"id": "{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]}"}, {"id": "metagpt/utils/s3.py:S3:get_object_url"}, {"id": "{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:upload_file"}, {"id": "{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}"}, {"id": "?:Session"}, {"id": "metagpt/configs/s3_config.py"}, {"id": "metagpt/configs/s3_config.py:S3Config"}, {"id": "{\"name\":\"S3Config\",\"package\":\"metagpt/configs/s3_config.py:S3Config\",\"attributes\":{\"access_key\":{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]},\"bucket\":{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]},\"endpoint\":{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]},\"secret_key\":{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:access_key"}, {"id": "{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:bucket"}, {"id": "{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:endpoint"}, {"id": "{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:secret_key"}, {"id": "{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO"}, {"id": "{\"name\":\"SPO\",\"package\":\"metagpt/utils/graph_repository.py:SPO\",\"attributes\":{\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"predicate\":{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]},\"subject\":{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO:object_"}, {"id": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"id": "{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO:subject"}, {"id": "{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase"}, {"id": "{\"name\":\"SQVUseCase\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCase\",\"attributes\":{\"actors\":{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"inputs\":{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]},\"outputs\":{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"steps\":{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors"}, {"id": "{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs"}, {"id": "{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs"}, {"id": "{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps"}, {"id": "{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails"}, {"id": "{\"name\":\"SQVUseCaseDetails\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]},\"use_cases\":{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}},\"methods\":{},\"compositions\":[\"SQVUseCase\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship"}, {"id": "{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases"}, {"id": "{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}"}, {"id": "?:SQVUseCase"}, {"id": "metagpt/roles/sales.py"}, {"id": "metagpt/roles/sales.py:Sales"}, {"id": "{\"name\":\"Sales\",\"package\":\"metagpt/roles/sales.py:Sales\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/sales.py:Sales:desc"}, {"id": "metagpt/roles/sales.py:Sales:name"}, {"id": "metagpt/roles/sales.py:Sales:profile"}, {"id": "metagpt/roles/sales.py:Sales:store"}, {"id": "metagpt/actions/search_and_summarize.py"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"id": "{\"name\":\"SearchAndSummarize\",\"package\":\"metagpt/actions/search_and_summarize.py:SearchAndSummarize\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"SearchEngine\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"id": "{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"id": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func"}, {"id": "{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func"}, {"id": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"id": "?:SearchEngineType"}, {"id": "?:SearchEngine"}, {"id": "metagpt/configs/search_config.py"}, {"id": "metagpt/configs/search_config.py:SearchConfig"}, {"id": "{\"name\":\"SearchConfig\",\"package\":\"metagpt/configs/search_config.py:SearchConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/search_config.py:SearchConfig:api_key"}, {"id": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"id": "metagpt/configs/search_config.py:SearchConfig:cse_id"}, {"id": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine.py"}, {"id": "metagpt/tools/search_engine.py:SearchEngine"}, {"id": "{\"name\":\"SearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SearchEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"Callable\",\"Coroutine\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"id": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}"}, {"id": "?:Coroutine"}, {"id": "metagpt/tools"}, {"id": "metagpt/tools:SearchEngineType"}, {"id": "{\"name\":\"SearchEngineType\",\"package\":\"metagpt/tools:SearchEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools:SearchEngineType:name"}, {"id": "metagpt/roles/searcher.py"}, {"id": "metagpt/roles/searcher.py:Searcher"}, {"id": "{\"name\":\"Searcher\",\"package\":\"metagpt/roles/searcher.py:Searcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"set_search_func\":{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/searcher.py:Searcher:constraints"}, {"id": "metagpt/roles/searcher.py:Searcher:engine"}, {"id": "metagpt/roles/searcher.py:Searcher:goal"}, {"id": "metagpt/roles/searcher.py:Searcher:name"}, {"id": "metagpt/roles/searcher.py:Searcher:profile"}, {"id": "metagpt/roles/searcher.py:Searcher:set_search_func"}, {"id": "{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"id": "{\"name\":\"SeleniumWrapper\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"executable_path\":{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"launch_args\":{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"id": "{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"id": "{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"id": "metagpt/schema.py:SerializationMixin"}, {"id": "{\"name\":\"SerializationMixin\",\"package\":\"metagpt/schema.py:SerializationMixin\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"package\":\"metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"params\":{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serpapi_api_key\":{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serpapi_api_key\":{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]},\"get_params\":{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"id": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"id": "{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key"}, {"id": "{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key"}, {"id": "{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"id": "{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"id": "{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"id": "?:aiohttp.ClientSession"}, {"id": "metagpt/tools/search_engine_serper.py"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"id": "{\"name\":\"SerperWrapper\",\"package\":\"metagpt/tools/search_engine_serper.py:SerperWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serper_api_key\":{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serper_api_key\":{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]},\"get_headers\":{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]},\"get_payloads\":{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"id": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key"}, {"id": "{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key"}, {"id": "{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"id": "{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"id": "{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"id": "{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SimpleMessage"}, {"id": "{\"name\":\"SimpleMessage\",\"package\":\"metagpt/schema.py:SimpleMessage\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SimpleMessage:content"}, {"id": "metagpt/schema.py:SimpleMessage:role"}, {"id": "metagpt/utils/singleton.py"}, {"id": "metagpt/utils/singleton.py:Singleton"}, {"id": "{\"name\":\"Singleton\",\"package\":\"metagpt/utils/singleton.py:Singleton\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/sk_agent.py"}, {"id": "metagpt/roles/sk_agent.py:SkAgent"}, {"id": "{\"name\":\"SkAgent\",\"package\":\"metagpt/roles/sk_agent.py:SkAgent\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"import_semantic_skill_from_directory\":{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]},\"import_skill\":{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]},\"kernel\":{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]},\"planner\":{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]},\"planner_cls\":{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Callable\",\"Kernel\",\"Plan\",\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"id": "{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"id": "{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"id": "{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"id": "{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"id": "{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"id": "{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"id": "?:Kernel"}, {"id": "?:Plan"}, {"id": "?:ActionPlanner"}, {"id": "?:BasicPlanner"}, {"id": "?:SequentialPlanner"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"id": "{\"name\":\"SkSearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SkSearchEngine\",\"attributes\":{\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill"}, {"id": "{\"name\":\"Skill\",\"package\":\"metagpt/learn/skill_loader.py:Skill\",\"attributes\":{\"arguments\":{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"examples\":{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]},\"id\":{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]},\"returns\":{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]},\"x_prerequisite\":{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Example\",\"Parameter\"],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"id": "{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:description"}, {"id": "metagpt/learn/skill_loader.py:Skill:examples"}, {"id": "{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:id"}, {"id": "{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:name"}, {"id": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"id": "{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:returns"}, {"id": "{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"id": "{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}"}, {"id": "?:Example"}, {"id": "?:Parameter"}, {"id": "metagpt/actions/skill_action.py:SkillAction"}, {"id": "{\"name\":\"SkillAction\",\"package\":\"metagpt/actions/skill_action.py:SkillAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"find_and_call_function\":{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:args"}, {"id": "{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"id": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"id": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"id": "{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:run"}, {"id": "metagpt/management/skill_manager.py"}, {"id": "metagpt/management/skill_manager.py:SkillManager"}, {"id": "{\"name\":\"SkillManager\",\"package\":\"metagpt/management/skill_manager.py:SkillManager\",\"attributes\":{},\"methods\":{\"add_skill\":{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]},\"del_skill\":{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]},\"generate_skill_desc\":{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]},\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"retrieve_skill\":{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]},\"retrieve_skill_scored\":{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"id": "{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"id": "{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"id": "{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"id": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"id": "{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"id": "{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"id": "{\"name\":\"SkillsDeclaration\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration\",\"attributes\":{\"components\":{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]},\"entities\":{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]},\"skillapi\":{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}},\"methods\":{\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"get_skill_list\":{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}},\"compositions\":[\"Components\",\"Entity\"],\"aggregations\":[\"Skill\",\"Context\",\"SkillsDeclaration\",\"Path\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"id": "{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"id": "{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"id": "{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"id": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"id": "{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}"}, {"id": "?:Components"}, {"id": "?:Entity"}, {"id": "metagpt/provider/spark_api.py:SparkLLM"}, {"id": "{\"name\":\"SparkLLM\",\"package\":\"metagpt/provider/spark_api.py:SparkLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"id": "metagpt/strategy/tot_schema.py:Strategy"}, {"id": "{\"name\":\"Strategy\",\"package\":\"metagpt/strategy/tot_schema.py:Strategy\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"id": "metagpt/subscription.py"}, {"id": "metagpt/subscription.py:SubscriptionRunner"}, {"id": "{\"name\":\"SubscriptionRunner\",\"package\":\"metagpt/subscription.py:SubscriptionRunner\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]},\"subscribe\":{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]},\"unsubscribe\":{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"Role\",\"asyncio.Task\"],\"aggregations\":[\"Awaitable\",\"Message\",\"Callable\",\"AsyncGenerator\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"id": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"id": "{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"id": "{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"id": "{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"id": "?:asyncio.Task"}, {"id": "?:Awaitable"}, {"id": "metagpt/actions/summarize_code.py"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"id": "{\"name\":\"SummarizeCode\",\"package\":\"metagpt/actions/summarize_code.py:SummarizeCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"summarize_code\":{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"id": "{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SystemMessage"}, {"id": "{\"name\":\"SystemMessage\",\"package\":\"metagpt/schema.py:SystemMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py"}, {"id": "metagpt/actions/talk_action.py:TalkAction"}, {"id": "{\"name\":\"TalkAction\",\"package\":\"metagpt/actions/talk_action.py:TalkAction\",\"attributes\":{\"aask_args\":{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]},\"agent_description\":{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]},\"history_summary\":{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"prompt_gpt4\":{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"id": "{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:agent_description"}, {"id": "{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"id": "{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"id": "{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:language"}, {"id": "{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"id": "{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"id": "metagpt/actions/talk_action.py:TalkAction:run"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"id": "{\"name\":\"TalkActionPrompt\",\"package\":\"metagpt/actions/talk_action.py:TalkActionPrompt\",\"attributes\":{\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"FORMATION_LOOSE\":{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"id": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"id": "{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Task"}, {"id": "{\"name\":\"Task\",\"package\":\"metagpt/actions/action_node.py:Task\",\"attributes\":{\"dependent_task_ids\":{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"task_id\":{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]},\"tool\":{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:Task:dependent_task_ids"}, {"id": "{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Task:name"}, {"id": "metagpt/actions/action_node.py:Task:task_id"}, {"id": "{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Task:tool"}, {"id": "{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Tasks"}, {"id": "{\"name\":\"Tasks\",\"package\":\"metagpt/actions/action_node.py:Tasks\",\"attributes\":{\"tasks\":{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}},\"methods\":{},\"compositions\":[\"Task\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:Tasks:tasks"}, {"id": "{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}"}, {"id": "?:Task"}, {"id": "metagpt/roles/teacher.py"}, {"id": "metagpt/roles/teacher.py:Teacher"}, {"id": "{\"name\":\"Teacher\",\"package\":\"metagpt/roles/teacher.py:Teacher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"course_title\":{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"new_file_name\":{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:constraints"}, {"id": "metagpt/roles/teacher.py:Teacher:course_title"}, {"id": "{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:desc"}, {"id": "metagpt/roles/teacher.py:Teacher:goal"}, {"id": "metagpt/roles/teacher.py:Teacher:name"}, {"id": "metagpt/roles/teacher.py:Teacher:profile"}, {"id": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"id": "{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"package\":\"metagpt/actions/write_teaching_plan.py:TeachingPlanBlock\",\"attributes\":{\"COURSE_TITLE\":{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]},\"DATA_BEGIN_TAG\":{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]},\"DATA_END_TAG\":{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]},\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"PROMPT_TEMPLATE\":{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]},\"PROMPT_TITLE_TEMPLATE\":{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]},\"TOPICS\":{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]},\"TOPIC_STATEMENTS\":{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"id": "{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"id": "{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"id": "{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"id": "{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"id": "{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"id": "{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"id": "{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}"}, {"id": "metagpt/team.py"}, {"id": "metagpt/team.py:Team"}, {"id": "{\"name\":\"Team\",\"package\":\"metagpt/team.py:Team\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"env\":{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]},\"idea\":{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]},\"investment\":{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"deserialize\":{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]},\"hire\":{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]},\"invest\":{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]},\"run_project\":{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]},\"serialize\":{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]},\"start_project\":{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}},\"compositions\":[\"Environment\"],\"aggregations\":[\"Team\",\"Context\",\"Path\",\"Role\"]}"}, {"id": "metagpt/team.py:Team:cost_manager"}, {"id": "metagpt/team.py:Team:env"}, {"id": "{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]}"}, {"id": "metagpt/team.py:Team:idea"}, {"id": "{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]}"}, {"id": "metagpt/team.py:Team:investment"}, {"id": "{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]}"}, {"id": "metagpt/team.py:Team:model_config"}, {"id": "metagpt/team.py:Team:deserialize"}, {"id": "{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]}"}, {"id": "metagpt/team.py:Team:hire"}, {"id": "{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/team.py:Team:invest"}, {"id": "{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:run_project"}, {"id": "{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:serialize"}, {"id": "{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/team.py:Team:start_project"}, {"id": "{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"id": "?:Team"}, {"id": "metagpt/schema.py:TestingContext"}, {"id": "{\"name\":\"TestingContext\",\"package\":\"metagpt/schema.py:TestingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"test_doc\":{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:TestingContext:code_doc"}, {"id": "{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:TestingContext:filename"}, {"id": "metagpt/schema.py:TestingContext:test_doc"}, {"id": "{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode"}, {"id": "{\"name\":\"ThoughtNode\",\"package\":\"metagpt/strategy/base.py:ThoughtNode\",\"attributes\":{\"id\":{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"valid_status\":{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]},\"value\":{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}},\"methods\":{\"update_valid_status\":{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]},\"update_value\":{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:id"}, {"id": "{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:name"}, {"id": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"id": "{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:value"}, {"id": "{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"id": "{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"id": "{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"package\":\"metagpt/strategy/tot.py:ThoughtSolverBase\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}},\"methods\":{\"evaluate_node\":{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]},\"generate_thoughts\":{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"select_nodes\":{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]},\"update_solution\":{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}},\"compositions\":[\"ThoughtTree\"],\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"id": "{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"id": "{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"id": "{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"id": "{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"id": "{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}"}, {"id": "?:ThoughtTree"}, {"id": "?:ThoughtNode"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"package\":\"metagpt/strategy/tot_schema.py:ThoughtSolverConfig\",\"attributes\":{\"evaluator\":{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]},\"max_steps\":{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]},\"method_select\":{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]},\"n_generate_sample\":{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]},\"n_select_sample\":{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]},\"n_solution_sample\":{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]},\"parser\":{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"id": "{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"id": "{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"id": "{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"id": "{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"id": "{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"id": "{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"id": "{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree"}, {"id": "{\"name\":\"ThoughtTree\",\"package\":\"metagpt/strategy/base.py:ThoughtTree\",\"attributes\":{\"all_nodes\":{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}},\"methods\":{\"parse_node_path\":{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]},\"show\":{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]},\"update_node\":{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}},\"compositions\":[],\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"id": "{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"id": "{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:show"}, {"id": "{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"id": "{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager"}, {"id": "{\"name\":\"TokenCostManager\",\"package\":\"metagpt/utils/cost_manager.py:TokenCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}},\"methods\":{\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens"}, {"id": "{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens"}, {"id": "{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost"}, {"id": "metagpt/actions/action_node.py:ToolUse"}, {"id": "{\"name\":\"ToolUse\",\"package\":\"metagpt/actions/action_node.py:ToolUse\",\"attributes\":{\"tool_name\":{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ToolUse:tool_name"}, {"id": "{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/translator.py"}, {"id": "metagpt/tools/translator.py:Translator"}, {"id": "{\"name\":\"Translator\",\"package\":\"metagpt/tools/translator.py:Translator\",\"attributes\":{},\"methods\":{\"translate_prompt\":{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"id": "{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought"}, {"id": "{\"name\":\"TreeofThought\",\"package\":\"metagpt/strategy/tot.py:TreeofThought\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"solver\":{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:config"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"id": "{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"id": "{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"id": "metagpt/roles/tutorial_assistant.py"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"id": "{\"name\":\"TutorialAssistant\",\"package\":\"metagpt/roles/tutorial_assistant.py:TutorialAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"main_title\":{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]},\"total_content\":{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"id": "{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"id": "{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"id": "metagpt/schema.py:UMLClassAttribute"}, {"id": "{\"name\":\"UMLClassAttribute\",\"package\":\"metagpt/schema.py:UMLClassAttribute\",\"attributes\":{\"default_value\":{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]},\"value_type\":{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:default_value"}, {"id": "{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:value_type"}, {"id": "{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:get_mermaid"}, {"id": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta"}, {"id": "{\"name\":\"UMLClassMeta\",\"package\":\"metagpt/schema.py:UMLClassMeta\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"visibility\":{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}},\"methods\":{\"name_to_visibility\":{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta:name"}, {"id": "metagpt/schema.py:UMLClassMeta:visibility"}, {"id": "{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta:name_to_visibility"}, {"id": "{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod"}, {"id": "{\"name\":\"UMLClassMethod\",\"package\":\"metagpt/schema.py:UMLClassMethod\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"return_type\":{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassAttribute\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod:args"}, {"id": "{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"id": "metagpt/schema.py:UMLClassMethod:return_type"}, {"id": "{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod:get_mermaid"}, {"id": "?:UMLClassAttribute"}, {"id": "metagpt/schema.py:UMLClassView"}, {"id": "{\"name\":\"UMLClassView\",\"package\":\"metagpt/schema.py:UMLClassView\",\"attributes\":{\"attributes\":{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"methods\":{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]},\"load_dot_class_info\":{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}},\"compositions\":[\"UMLClassAttribute\",\"UMLClassMethod\"],\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"id": "metagpt/schema.py:UMLClassView:attributes"}, {"id": "{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"id": "metagpt/schema.py:UMLClassView:methods"}, {"id": "{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}"}, {"id": "metagpt/schema.py:UMLClassView:get_mermaid"}, {"id": "metagpt/schema.py:UMLClassView:load_dot_class_info"}, {"id": "{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"id": "?:UMLClassMethod"}, {"id": "?:UMLClassView"}, {"id": "metagpt/tools/ut_writer.py"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator"}, {"id": "{\"name\":\"UTGenerator\",\"package\":\"metagpt/tools/ut_writer.py:UTGenerator\",\"attributes\":{\"chatgpt_method\":{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]},\"icl_sample\":{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]},\"questions_path\":{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]},\"swagger_file\":{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]},\"template_prefix\":{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]},\"ut_py_path\":{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}},\"methods\":{\"ask_gpt_and_save\":{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]},\"build_api_doc\":{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]},\"build_object_properties\":{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]},\"generate_ut\":{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]},\"get_swagger_json\":{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]},\"get_tags_mapping\":{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]},\"gpt_msgs_to_code\":{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]},\"para_to_str\":{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"id": "{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"id": "{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"id": "{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"id": "{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"id": "{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"id": "{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"id": "{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"id": "{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"id": "{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"id": "{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"id": "{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"id": "{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"id": "{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"id": "{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"id": "{\"name\":\"Usage\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Usage\",\"attributes\":{\"prompt_tokens\":{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]},\"total_tokens\":{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"id": "{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"id": "{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UserMessage"}, {"id": "{\"name\":\"UserMessage\",\"package\":\"metagpt/schema.py:UserMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/add_requirement.py"}, {"id": "metagpt/actions/add_requirement.py:UserRequirement"}, {"id": "{\"name\":\"UserRequirement\",\"package\":\"metagpt/actions/add_requirement.py:UserRequirement\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo"}, {"id": "{\"name\":\"VisualDiGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo\",\"attributes\":{},\"methods\":{\"get_mermaid_class_view\":{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]},\"get_mermaid_sequence_views\":{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view"}, {"id": "{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views"}, {"id": "{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from"}, {"id": "{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"id": "{\"name\":\"VisualGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualGraphRepo\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"id": "{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient\",\"attributes\":{},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"package\":\"metagpt/actions/research.py:WebBrowseAndSummarize\",\"attributes\":{\"browse_func\":{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"web_browser_engine\":{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"WebBrowserEngine\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"id": "{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"id": "{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "?:WebBrowserEngine"}, {"id": "metagpt/tools/web_browser_engine.py"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"id": "{\"name\":\"WebBrowserEngine\",\"package\":\"metagpt/tools/web_browser_engine.py:WebBrowserEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}},\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"id": "{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}"}, {"id": "metagpt/tools:WebBrowserEngineType"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"package\":\"metagpt/tools:WebBrowserEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools:WebBrowserEngineType:name"}, {"id": "metagpt/utils/parse_html.py"}, {"id": "metagpt/utils/parse_html.py:WebPage"}, {"id": "{\"name\":\"WebPage\",\"package\":\"metagpt/utils/parse_html.py:WebPage\",\"attributes\":{\"html\":{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]},\"inner_text\":{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]},\"soup\":{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]},\"title\":{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{\"get_links\":{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}},\"compositions\":[],\"aggregations\":[\"Generator\"]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:html"}, {"id": "{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"id": "{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:soup"}, {"id": "{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:title"}, {"id": "{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:url"}, {"id": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"id": "{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}"}, {"id": "?:Generator"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"id": "{\"name\":\"WikiHowTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:WikiHowTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig"}, {"id": "{\"name\":\"WorkspaceConfig\",\"package\":\"metagpt/configs/workspace_config.py:WorkspaceConfig\",\"attributes\":{\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"uid\":{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]},\"use_uid\":{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}},\"methods\":{\"check_uid_and_update_path\":{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]},\"check_workspace_path\":{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:path"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid"}, {"id": "{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid"}, {"id": "{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path"}, {"id": "{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path"}, {"id": "{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code.py"}, {"id": "metagpt/actions/write_code.py:WriteCode"}, {"id": "{\"name\":\"WriteCode\",\"package\":\"metagpt/actions/write_code.py:WriteCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_codes\":{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"ProjectRepo\",\"Document\",\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"id": "metagpt/actions/write_code.py:WriteCode:name"}, {"id": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"id": "{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"id": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_an_draft.py"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"id": "{\"name\":\"WriteCodeAN\",\"package\":\"metagpt/actions/write_code_an_draft.py:WriteCodeAN\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"id": "{\"name\":\"WriteCodePlanAndChange\",\"package\":\"metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_old_codes\":{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes"}, {"id": "{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run"}, {"id": "metagpt/actions/write_code_review.py"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"id": "{\"name\":\"WriteCodeReview\",\"package\":\"metagpt/actions/write_code_review.py:WriteCodeReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code_review_and_rewrite\":{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"id": "{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent"}, {"id": "{\"name\":\"WriteContent\",\"package\":\"metagpt/actions/write_tutorial.py:WriteContent\",\"attributes\":{\"directory\":{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"id": "{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/design_api.py"}, {"id": "metagpt/actions/design_api.py:WriteDesign"}, {"id": "{\"name\":\"WriteDesign\",\"package\":\"metagpt/actions/design_api.py:WriteDesign\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"id": "metagpt/actions/design_api.py:WriteDesign:i_context"}, {"id": "metagpt/actions/design_api.py:WriteDesign:name"}, {"id": "metagpt/actions/design_api.py:WriteDesign:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"id": "{\"name\":\"WriteDirectory\",\"package\":\"metagpt/actions/write_tutorial.py:WriteDirectory\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_docstring.py"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"id": "{\"name\":\"WriteDocstring\",\"package\":\"metagpt/actions/write_docstring.py:WriteDocstring\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]},\"write_docstring\":{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:i_context"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"id": "{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/actions/write_prd.py"}, {"id": "metagpt/actions/write_prd.py:WritePRD"}, {"id": "{\"name\":\"WritePRD\",\"package\":\"metagpt/actions/write_prd.py:WritePRD\",\"attributes\":{\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}},\"methods\":{\"get_related_docs\":{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Document\",\"Message\",\"ActionOutput\\\\\"]}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:project_name"}, {"id": "metagpt/actions/write_prd.py:WritePRD:get_related_docs"}, {"id": "{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}"}, {"id": "?:ActionOutput\\"}, {"id": "metagpt/actions/write_prd_review.py"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"id": "{\"name\":\"WritePRDReview\",\"package\":\"metagpt/actions/write_prd_review.py:WritePRDReview\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]},\"prd_review_prompt_template\":{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"id": "{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"id": "{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_review.py"}, {"id": "metagpt/actions/write_review.py:WriteReview"}, {"id": "{\"name\":\"WriteReview\",\"package\":\"metagpt/actions/write_review.py:WriteReview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_review.py:WriteReview:name"}, {"id": "metagpt/actions/write_review.py:WriteReview:run"}, {"id": "metagpt/actions/project_management.py"}, {"id": "metagpt/actions/project_management.py:WriteTasks"}, {"id": "{\"name\":\"WriteTasks\",\"package\":\"metagpt/actions/project_management.py:WriteTasks\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:i_context"}, {"id": "metagpt/actions/project_management.py:WriteTasks:name"}, {"id": "metagpt/actions/project_management.py:WriteTasks:run"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"package\":\"metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{\"format_value\":{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"id": "{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"id": "{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_test.py"}, {"id": "metagpt/actions/write_test.py:WriteTest"}, {"id": "{\"name\":\"WriteTest\",\"package\":\"metagpt/actions/write_test.py:WriteTest\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}},\"compositions\":[\"TestingContext\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:name"}, {"id": "metagpt/actions/write_test.py:WriteTest:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"id": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"id": "{\"name\":\"WsParam\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}},\"methods\":{\"create_url\":{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"id": "{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"id": "{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"id": "{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"id": "{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/yaml_model.py"}, {"id": "metagpt/utils/yaml_model.py:YamlModel"}, {"id": "{\"name\":\"YamlModel\",\"package\":\"metagpt/utils/yaml_model.py:YamlModel\",\"attributes\":{\"extra_fields\":{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}},\"methods\":{\"from_yaml_file\":{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]},\"read_yaml\":{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]},\"to_yaml_file\":{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:extra_fields"}, {"id": "{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file"}, {"id": "{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:read_yaml"}, {"id": "{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file"}, {"id": "{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}"}, {"id": "?:YamlModel"}, {"id": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"id": "{\"name\":\"YamlModelWithoutDefault\",\"package\":\"metagpt/utils/yaml_model.py:YamlModelWithoutDefault\",\"attributes\":{},\"methods\":{\"check_not_default_config\":{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config"}, {"id": "{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuAILLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"id": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"id": "{\"name\":\"ZhiPuEvent\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuEvent\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"package\":\"metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI\",\"attributes\":{},\"methods\":{\"acreate\":{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]},\"acreate_stream\":{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]},\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]},\"split_zhipu_api_url\":{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"AsyncSSEClient\"]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate"}, {"id": "{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream"}, {"id": "{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"id": "{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"id": "{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}"}, {"id": "?:AsyncSSEClient"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"id": "{\"name\":\"_AgentSkill\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView"}, {"id": "{\"name\":\"_VisualClassView\",\"package\":\"metagpt/utils/visual_graph_repo.py:_VisualClassView\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"generalizations\":{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]},\"uml\":{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}},\"compositions\":[\"UMLClassView\"],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations"}, {"id": "{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package"}, {"id": "{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml"}, {"id": "{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid"}, {"id": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_cost_manager"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_cost_manager"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:_git_repo"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:_split_literal"}, {"id": "metagpt/repo_parser.py:DotClassMethod:_parse_name"}, {"id": "metagpt/repo_parser.py:DotClassMethod:_parse_args"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"id": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"id": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"id": "metagpt/repo_parser.py:is_func"}, {"id": "function"}, {"id": "metagpt/repo_parser.py:ast.Constant:\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:__future__"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/repo_parser.py:names:['annotations']"}, {"id": "metagpt/repo_parser.py:ast"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:json"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:re"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:subprocess"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pathlib"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Path']"}, {"id": "metagpt/repo_parser.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/repo_parser.py:pandas as pd"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pydantic"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/repo_parser.py:names:['BaseModel', 'Field', 'field_validator']"}, {"id": "metagpt/repo_parser.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/repo_parser.py:module:metagpt.logs"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/repo_parser.py:names:['logger']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"id": "metagpt/repo_parser.py:names:['any_to_str', 'aread']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/repo_parser.py:names:['handle_exception']"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":157,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":160,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":175,\"end_lineno\":179,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassRelationship\"],\"properties\":{}}"}, {"id": "{\"lineno\":182,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotReturn\"],\"properties\":{}}"}, {"id": "{\"lineno\":202,\"end_lineno\":264,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":267,\"end_lineno\":634,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":637,\"end_lineno\":638,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"id": "metagpt/startup.py"}, {"id": "metagpt/startup.py:generate_repo"}, {"id": "metagpt/startup.py:startup"}, {"id": "metagpt/startup.py:copy_config_to"}, {"id": "metagpt/startup.py:app"}, {"id": "global_variable"}, {"id": "metagpt/startup.py:asyncio"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:shutil"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:module:pathlib"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/startup.py:names:['Path']"}, {"id": "metagpt/startup.py:typer"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:module:metagpt.config2"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/startup.py:names:['config']"}, {"id": "metagpt/startup.py:module:metagpt.const"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/startup.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']"}, {"id": "metagpt/startup.py:module:metagpt.context"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/startup.py:names:['Context']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"id": "{\"lineno\":16,\"end_lineno\":68,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_repo\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":136,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"copy_config_to\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:__name__:__main__"}, {"id": "{\"lineno\":139,\"end_lineno\":140,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:asyncio"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"id": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']"}, {"id": "metagpt/subscription.py:module:pydantic"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/subscription.py:module:metagpt.logs"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/subscription.py:names:['logger']"}, {"id": "metagpt/subscription.py:module:metagpt.roles"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/subscription.py:names:['Role']"}, {"id": "metagpt/subscription.py:module:metagpt.schema"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/subscription.py:names:['Message']"}, {"id": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"id": "metagpt/__init__.py"}, {"id": "metagpt/__init__.py:module:metagpt"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"id": "metagpt/__init__.py:names:['_compat as _']"}, {"id": "metagpt/llm.py"}, {"id": "metagpt/llm.py:LLM"}, {"id": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/llm.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/llm.py:names:['Optional']"}, {"id": "metagpt/llm.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/llm.py:names:['LLMConfig']"}, {"id": "metagpt/llm.py:module:metagpt.context"}, {"id": "metagpt/llm.py:names:['Context']"}, {"id": "metagpt/llm.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/llm.py:names:['BaseLLM']"}, {"id": "{\"lineno\":15,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:merge_dict"}, {"id": "metagpt/config2.py:config"}, {"id": "metagpt/config2.py:ast.Constant:\n@Time : 2024/1/4 01:25\n@Author : alexanderwu\n@File : config2.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 01:25\\n@Author : alexanderwu\\n@File : config2.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:os"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:module:pathlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/config2.py:names:['Path']"}, {"id": "metagpt/config2.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/config2.py:names:['Dict', 'Iterable', 'List', 'Literal', 'Optional']"}, {"id": "metagpt/config2.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"id": "metagpt/config2.py:names:['BaseModel', 'model_validator']"}, {"id": "metagpt/config2.py:module:metagpt.configs.browser_config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"id": "metagpt/config2.py:names:['BrowserConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/config2.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/config2.py:module:metagpt.configs.mermaid_config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"id": "metagpt/config2.py:names:['MermaidConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.redis_config"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"id": "metagpt/config2.py:names:['RedisConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.s3_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"id": "metagpt/config2.py:names:['S3Config']"}, {"id": "metagpt/config2.py:module:metagpt.configs.search_config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"id": "metagpt/config2.py:names:['SearchConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.workspace_config"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"id": "metagpt/config2.py:names:['WorkspaceConfig']"}, {"id": "metagpt/config2.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/config2.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']"}, {"id": "metagpt/config2.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/config2.py:names:['YamlModel']"}, {"id": "{\"lineno\":25,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CLIParams\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":132,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"id": "{\"lineno\":135,\"end_lineno\":140,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_dict\"],\"properties\":{}}"}, {"id": "{\"lineno\":143,\"end_lineno\":143,\"type_name\":\"ast.Assign\",\"tokens\":[\"config\"],\"properties\":{}}"}, {"id": "metagpt/team.py:Team:__init__"}, {"id": "metagpt/team.py:Team:_check_balance"}, {"id": "metagpt/team.py:Team:_save"}, {"id": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/team.py:warnings"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/team.py:module:pathlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/team.py:names:['Path']"}, {"id": "metagpt/team.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/team.py:names:['Any', 'Optional']"}, {"id": "metagpt/team.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/team.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/team.py:names:['UserRequirement']"}, {"id": "metagpt/team.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"id": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']"}, {"id": "metagpt/team.py:module:metagpt.context"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/team.py:names:['Context']"}, {"id": "metagpt/team.py:module:metagpt.environment"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/team.py:names:['Environment']"}, {"id": "metagpt/team.py:module:metagpt.logs"}, {"id": "metagpt/team.py:names:['logger']"}, {"id": "metagpt/team.py:module:metagpt.roles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/team.py:names:['Role']"}, {"id": "metagpt/team.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/team.py:names:['Message']"}, {"id": "metagpt/team.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"id": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']"}, {"id": "{\"lineno\":32,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"id": "metagpt/context.py:AttrDict:__init__"}, {"id": "metagpt/context.py:AttrDict:__getattr__"}, {"id": "metagpt/context.py:AttrDict:__setattr__"}, {"id": "metagpt/context.py:AttrDict:__delattr__"}, {"id": "metagpt/context.py:ast.Constant:\n@Time : 2024/1/4 16:32\n@Author : alexanderwu\n@File : context.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:32\\n@Author : alexanderwu\\n@File : context.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/context.py:os"}, {"id": "metagpt/context.py:module:pathlib"}, {"id": "metagpt/context.py:names:['Path']"}, {"id": "metagpt/context.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/context.py:names:['Any', 'Optional']"}, {"id": "metagpt/context.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"id": "metagpt/context.py:names:['BaseModel', 'ConfigDict']"}, {"id": "metagpt/context.py:module:metagpt.config2"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/context.py:names:['Config']"}, {"id": "metagpt/context.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/context.py:names:['LLMConfig']"}, {"id": "metagpt/context.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/context.py:names:['BaseLLM']"}, {"id": "metagpt/context.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"id": "metagpt/context.py:names:['create_llm_instance']"}, {"id": "metagpt/context.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/context.py:names:['CostManager']"}, {"id": "metagpt/context.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/context.py:names:['GitRepository']"}, {"id": "metagpt/context.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/context.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AttrDict\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Context\"],\"properties\":{}}"}, {"id": "metagpt/logs.py"}, {"id": "metagpt/logs.py:define_log_level"}, {"id": "metagpt/logs.py:log_llm_stream"}, {"id": "metagpt/logs.py:set_llm_stream_logfunc"}, {"id": "metagpt/logs.py:logger"}, {"id": "metagpt/logs.py:_llm_stream_log"}, {"id": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:sys"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:module:datetime"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/logs.py:names:['datetime']"}, {"id": "metagpt/logs.py:module:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"id": "metagpt/logs.py:names:['partial']"}, {"id": "metagpt/logs.py:module:loguru"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"id": "metagpt/logs.py:names:['logger as _logger']"}, {"id": "metagpt/logs.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/logs.py:names:['METAGPT_ROOT']"}, {"id": "{\"lineno\":18,\"end_lineno\":26,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":38,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"id": "metagpt/document.py:Repo:_path"}, {"id": "metagpt/document.py:Repo:_set"}, {"id": "metagpt/document.py:validate_cols"}, {"id": "metagpt/document.py:read_data"}, {"id": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:enum"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/document.py:names:['Enum']"}, {"id": "metagpt/document.py:module:pathlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/document.py:names:['Path']"}, {"id": "metagpt/document.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"id": "metagpt/document.py:names:['Optional', 'Union']"}, {"id": "metagpt/document.py:pandas as pd"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:langchain.document_loaders"}, {"id": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"id": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']"}, {"id": "metagpt/document.py:module:langchain.text_splitter"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"id": "metagpt/document.py:names:['CharacterTextSplitter']"}, {"id": "metagpt/document.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/document.py:module:tqdm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"id": "metagpt/document.py:names:['tqdm']"}, {"id": "metagpt/document.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"id": "metagpt/document.py:names:['RepoParser']"}, {"id": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"id": "{\"lineno\":171,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : environment.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n 1. Remove the functionality of `Environment` class as a public message buffer.\n 2. Standardize the message forwarding behavior of the `Environment` class.\n 3. Add the `is_idle` property.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":13,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : environment.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n 1. Remove the functionality of `Environment` class as a public message buffer.\\n 2. Standardize the message forwarding behavior of the `Environment` class.\\n 3. Add the `is_idle` property.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:asyncio"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/environment.py:names:['Iterable', 'Set']"}, {"id": "metagpt/environment.py:module:pydantic"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/environment.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/environment.py:module:metagpt.context"}, {"id": "metagpt/environment.py:names:['Context']"}, {"id": "metagpt/environment.py:module:metagpt.logs"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/environment.py:names:['logger']"}, {"id": "metagpt/environment.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/environment.py:names:['Role']"}, {"id": "metagpt/environment.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/environment.py:names:['Message']"}, {"id": "metagpt/environment.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_send_to\"]}}"}, {"id": "metagpt/environment.py:names:['is_send_to']"}, {"id": "{\"lineno\":26,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py"}, {"id": "metagpt/_compat.py:platform"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:sys"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:warnings"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m"}, {"id": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"id": "metagpt/context_mixin.py:ContextMixin:__init__"}, {"id": "metagpt/context_mixin.py:ast.Constant:\n@Time : 2024/1/11 17:25\n@Author : alexanderwu\n@File : context_mixin.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/11 17:25\\n@Author : alexanderwu\\n@File : context_mixin.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/context_mixin.py:module:typing"}, {"id": "metagpt/context_mixin.py:names:['Optional']"}, {"id": "metagpt/context_mixin.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/context_mixin.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/context_mixin.py:module:metagpt.config2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/context_mixin.py:names:['Config']"}, {"id": "metagpt/context_mixin.py:module:metagpt.context"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/context_mixin.py:names:['Context']"}, {"id": "metagpt/context_mixin.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/context_mixin.py:names:['BaseLLM']"}, {"id": "{\"lineno\":17,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ContextMixin\"],\"properties\":{}}"}, {"id": "metagpt/const.py"}, {"id": "metagpt/const.py:get_metagpt_package_root"}, {"id": "metagpt/const.py:get_metagpt_root"}, {"id": "metagpt/const.py:CONFIG_ROOT"}, {"id": "metagpt/const.py:METAGPT_ROOT"}, {"id": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT"}, {"id": "metagpt/const.py:EXAMPLE_PATH"}, {"id": "metagpt/const.py:DATA_PATH"}, {"id": "metagpt/const.py:TEST_DATA_PATH"}, {"id": "metagpt/const.py:RESEARCH_PATH"}, {"id": "metagpt/const.py:TUTORIAL_PATH"}, {"id": "metagpt/const.py:INVOICE_OCR_TABLE_PATH"}, {"id": "metagpt/const.py:UT_PATH"}, {"id": "metagpt/const.py:SWAGGER_PATH"}, {"id": "metagpt/const.py:UT_PY_PATH"}, {"id": "metagpt/const.py:API_QUESTIONS_PATH"}, {"id": "metagpt/const.py:SERDESER_PATH"}, {"id": "metagpt/const.py:TMP"}, {"id": "metagpt/const.py:SOURCE_ROOT"}, {"id": "metagpt/const.py:PROMPT_PATH"}, {"id": "metagpt/const.py:SKILL_DIRECTORY"}, {"id": "metagpt/const.py:MEM_TTL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_FROM"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY"}, {"id": "metagpt/const.py:MESSAGE_META_ROLE"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE"}, {"id": "metagpt/const.py:REQUIREMENT_FILENAME"}, {"id": "metagpt/const.py:BUGFIX_FILENAME"}, {"id": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILENAME"}, {"id": "metagpt/const.py:DOCS_FILE_REPO"}, {"id": "metagpt/const.py:PRDS_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:TASK_FILE_REPO"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO"}, {"id": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO"}, {"id": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:SEQ_FLOW_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO"}, {"id": "metagpt/const.py:PRD_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TASK_PDF_FILE_REPO"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TEST_CODES_FILE_REPO"}, {"id": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO"}, {"id": "metagpt/const.py:RESOURCES_FILE_REPO"}, {"id": "metagpt/const.py:SD_OUTPUT_FILE_REPO"}, {"id": "metagpt/const.py:GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:CLASS_VIEW_FILE_REPO"}, {"id": "metagpt/const.py:YAPI_URL"}, {"id": "metagpt/const.py:DEFAULT_LANGUAGE"}, {"id": "metagpt/const.py:DEFAULT_MAX_TOKENS"}, {"id": "metagpt/const.py:COMMAND_TOKENS"}, {"id": "metagpt/const.py:BRAIN_MEMORY"}, {"id": "metagpt/const.py:SKILL_PATH"}, {"id": "metagpt/const.py:SERPER_API_KEY"}, {"id": "metagpt/const.py:DEFAULT_TOKEN_SIZE"}, {"id": "metagpt/const.py:BASE64_FORMAT"}, {"id": "metagpt/const.py:REDIS_KEY"}, {"id": "metagpt/const.py:LLM_API_TIMEOUT"}, {"id": "metagpt/const.py:IGNORED_MESSAGE_ID"}, {"id": "metagpt/const.py:GENERALIZATION"}, {"id": "metagpt/const.py:COMPOSITION"}, {"id": "metagpt/const.py:AGGREGATION"}, {"id": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"id": "metagpt/const.py:os"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/const.py:module:pathlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/const.py:names:['Path']"}, {"id": "metagpt/const.py:module:loguru"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/const.py:names:['logger']"}, {"id": "metagpt/const.py:metagpt"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":43,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":65,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":67,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":69,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":83,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"VISUAL_GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":109,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":123,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"id": "{\"lineno\":130,\"end_lineno\":130,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"id": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"id": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"id": "metagpt/schema.py:Document:__str__"}, {"id": "metagpt/schema.py:Document:__repr__"}, {"id": "metagpt/schema.py:Message:__init__"}, {"id": "metagpt/schema.py:Message:__setattr__"}, {"id": "metagpt/schema.py:Message:__str__"}, {"id": "metagpt/schema.py:Message:__repr__"}, {"id": "metagpt/schema.py:UserMessage:__init__"}, {"id": "metagpt/schema.py:SystemMessage:__init__"}, {"id": "metagpt/schema.py:AIMessage:__init__"}, {"id": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"id": "metagpt/schema.py:T"}, {"id": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:__future__"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/schema.py:names:['annotations']"}, {"id": "metagpt/schema.py:asyncio"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:json"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:os.path"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:uuid"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:abc"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/schema.py:names:['ABC']"}, {"id": "metagpt/schema.py:module:asyncio"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"id": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']"}, {"id": "metagpt/schema.py:module:json"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/schema.py:names:['JSONDecodeError']"}, {"id": "metagpt/schema.py:module:pathlib"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/schema.py:names:['Path']"}, {"id": "metagpt/schema.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/schema.py:names:['Any', 'Dict', 'Iterable', 'List', 'Optional', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/schema.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"id": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator', 'model_serializer', 'model_validator']"}, {"id": "metagpt/schema.py:module:metagpt.const"}, {"id": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/schema.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'PRDS_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/schema.py:module:metagpt.logs"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/schema.py:names:['logger']"}, {"id": "metagpt/schema.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"id": "metagpt/schema.py:names:['DotClassInfo']"}, {"id": "metagpt/schema.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"id": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']"}, {"id": "metagpt/schema.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/schema.py:names:['handle_exception']"}, {"id": "metagpt/schema.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":53,\"end_lineno\":57,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"id": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']"}, {"id": "{\"lineno\":60,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":159,\"end_lineno\":186,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"id": "{\"lineno\":189,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"id": "{\"lineno\":307,\"end_lineno\":313,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":316,\"end_lineno\":322,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":325,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":334,\"end_lineno\":403,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"id": "{\"lineno\":407,\"end_lineno\":407,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"id": "{\"lineno\":410,\"end_lineno\":415,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":418,\"end_lineno\":422,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":425,\"end_lineno\":428,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":431,\"end_lineno\":441,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":444,\"end_lineno\":447,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"id": "{\"lineno\":450,\"end_lineno\":469,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":472,\"end_lineno\":473,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":476,\"end_lineno\":497,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodePlanAndChangeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":501,\"end_lineno\":513,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMeta\"],\"properties\":{}}"}, {"id": "{\"lineno\":516,\"end_lineno\":536,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":539,\"end_lineno\":553,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":556,\"end_lineno\":583,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassView\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py"}, {"id": "metagpt/learn/text_to_image.py:text_to_image"}, {"id": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:base64"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.config2"}, {"id": "metagpt/learn/text_to_image.py:names:['Config']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['LLM']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['S3']"}, {"id": "{\"lineno\":20,\"end_lineno\":44,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py"}, {"id": "metagpt/learn/__init__.py:__all__"}, {"id": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_image']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_speech']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.google_search"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['google_search']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/learn/google_search.py"}, {"id": "metagpt/learn/google_search.py:google_search"}, {"id": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/learn/google_search.py:names:['SearchEngine']"}, {"id": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py"}, {"id": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"id": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:metagpt.config2"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.config2"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['Config']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['S3']"}, {"id": "{\"lineno\":17,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py"}, {"id": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"id": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py:metagpt.config2"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.config2"}, {"id": "metagpt/learn/text_to_embedding.py:names:['Config']"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"id": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']"}, {"id": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pathlib"}, {"id": "metagpt/learn/skill_loader.py:names:['Path']"}, {"id": "metagpt/learn/skill_loader.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/learn/skill_loader.py:aiofiles"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:yaml"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/learn/skill_loader.py:module:metagpt.context"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Context']"}, {"id": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"id": "metagpt/tools/search_engine_ddg.py:module:__future__"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_ddg.py:asyncio"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:json"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:module:concurrent"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'overload']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:metagpt.config2"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['config']"}, {"id": "{\"lineno\":21,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:__name__:__main__"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:connexion"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['List']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:meilisearch"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['Index']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"id": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['List']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:aiohttp"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:requests"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:pydantic"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":85,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serpapi.py:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:metagpt.config2"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['config']"}, {"id": "{\"lineno\":16,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:__name__:__main__"}, {"id": "{\"lineno\":113,\"end_lineno\":116,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_cache"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:__future__"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:asyncio"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:sys"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.config2"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['config']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']"}, {"id": "{\"lineno\":18,\"end_lineno\":95,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"id": "{\"lineno\":131,\"end_lineno\":136,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":139,\"end_lineno\":139,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":140,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:importlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']"}, {"id": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['sk_function']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":16,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__"}, {"id": "metagpt/tools/web_browser_engine.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine.py:importlib"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'overload']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebPage']"}, {"id": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "metagpt/tools/search_engine_serper.py:json"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serper.py:aiohttp"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_serper.py:module:metagpt.config2"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['config']"}, {"id": "{\"lineno\":17,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:__name__:__main__"}, {"id": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:Moderation:__init__"}, {"id": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['Union']"}, {"id": "metagpt/tools/moderation.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['BaseLLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py"}, {"id": "metagpt/tools/__init__.py:SearchEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"id": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py:module:enum"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/__init__.py:names:['Enum']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:__future__"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_googleapi.py:asyncio"}, {"id": "metagpt/tools/search_engine_googleapi.py:json"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:concurrent"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:typing"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['Optional']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']"}, {"id": "metagpt/tools/search_engine_googleapi.py:httplib2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:pydantic"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:metagpt.config2"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['config']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:metagpt.logs"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['logger']"}, {"id": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":133,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:__name__:__main__"}, {"id": "{\"lineno\":136,\"end_lineno\":139,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:asyncio"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:importlib"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:copy"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['Literal']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['By']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.config2"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['config']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']"}, {"id": "{\"lineno\":22,\"end_lineno\":83,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":125,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py"}, {"id": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"id": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:module:pathlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:names:['Path']"}, {"id": "metagpt/tools/openapi_v3_hello.py:connexion"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:__name__:__main__"}, {"id": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"id": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"id": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:base64"}, {"id": "metagpt/tools/azure_tts.py:module:pathlib"}, {"id": "metagpt/tools/azure_tts.py:names:['Path']"}, {"id": "metagpt/tools/azure_tts.py:module:uuid"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['uuid4']"}, {"id": "metagpt/tools/azure_tts.py:aiofiles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']"}, {"id": "metagpt/tools/azure_tts.py:module:metagpt.logs"}, {"id": "metagpt/tools/azure_tts.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":100,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"id": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"id": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/openai_text_to_image.py:requests"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['logger']"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['BaseLLM']"}, {"id": "{\"lineno\":17,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":67,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"id": "metagpt/tools/ut_writer.py:ICL_SAMPLE"}, {"id": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:OCR_API_DOC"}, {"id": "metagpt/tools/ut_writer.py:json"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:module:pathlib"}, {"id": "metagpt/tools/ut_writer.py:names:['Path']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.config2"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['config']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['awrite']"}, {"id": "{\"lineno\":11,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"id": "metagpt/tools/translator.py:prompt"}, {"id": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"id": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"id": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:base64"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/metagpt_text_to_image.py:requests"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":95,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"id": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"id": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE"}, {"id": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:base64"}, {"id": "metagpt/tools/iflytek_tts.py:hashlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:hmac"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:json"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:uuid"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:datetime"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['datetime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:enum"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Enum']"}, {"id": "metagpt/tools/iflytek_tts.py:module:pathlib"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Path']"}, {"id": "metagpt/tools/iflytek_tts.py:module:time"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['mktime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:typing"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Optional']"}, {"id": "metagpt/tools/iflytek_tts.py:module:urllib.parse"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['urlencode']"}, {"id": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['format_date_time']"}, {"id": "metagpt/tools/iflytek_tts.py:aiofiles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:websockets as websockets"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:pydantic"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['BaseModel']"}, {"id": "metagpt/tools/iflytek_tts.py:module:metagpt.logs"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['logger']"}, {"id": "{\"lineno\":29,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":113,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":143,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:module:typing"}, {"id": "metagpt/tools/prompt_writer.py:names:['Union']"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:module:collections"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/memory/memory.py:names:['defaultdict']"}, {"id": "metagpt/memory/memory.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']"}, {"id": "metagpt/memory/memory.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"id": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']"}, {"id": "metagpt/memory/memory.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"id": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']"}, {"id": "metagpt/memory/memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory.py:names:['Message']"}, {"id": "metagpt/memory/memory.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":19,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"id": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:json"}, {"id": "metagpt/memory/brain_memory.py:re"}, {"id": "metagpt/memory/brain_memory.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/memory/brain_memory.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.config2"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['config']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['logger']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Redis']"}, {"id": "{\"lineno\":26,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"id": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:module:pathlib"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Path']"}, {"id": "metagpt/memory/memory_storage.py:module:typing"}, {"id": "metagpt/memory/memory_storage.py:names:['Optional']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.embeddings"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FAISS']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Embeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FaissStore']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.logs"}, {"id": "metagpt/memory/memory_storage.py:names:['logger']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Message']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']"}, {"id": "{\"lineno\":21,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"id": "metagpt/memory/__init__.py"}, {"id": "metagpt/memory/__init__.py:__all__"}, {"id": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "metagpt/memory/__init__.py:module:metagpt.memory.memory"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/__init__.py:names:['Memory']"}, {"id": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Optional']"}, {"id": "metagpt/memory/longterm_memory.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['logger']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Memory']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['RoleContext']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.schema"}, {"id": "metagpt/memory/longterm_memory.py:names:['Message']"}, {"id": "{\"lineno\":18,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"id": "metagpt/document_store/qdrant_store.py:module:dataclasses"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['dataclass']"}, {"id": "metagpt/document_store/qdrant_store.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['List']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']"}, {"id": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['BaseStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"id": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:chromadb"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"id": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:os"}, {"id": "metagpt/document_store/lancedb_store.py:shutil"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:lancedb"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py"}, {"id": "metagpt/document_store/__init__.py:__all__"}, {"id": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/document_store/__init__.py:names:['FaissStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"id": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:asyncio"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:module:pathlib"}, {"id": "metagpt/document_store/faiss_store.py:names:['Path']"}, {"id": "metagpt/document_store/faiss_store.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Optional']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['FAISS']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Embeddings']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['LocalStore']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.logs"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['logger']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.utils.embedding"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['get_embedding']"}, {"id": "{\"lineno\":21,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"id": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:module:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/document_store/base_store.py:module:pathlib"}, {"id": "metagpt/document_store/base_store.py:names:['Path']"}, {"id": "{\"lineno\":12,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:__init__"}, {"id": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:anthropic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:module:anthropic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']"}, {"id": "metagpt/provider/anthropic_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['LLMConfig']"}, {"id": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"id": "metagpt/provider/google_gemini_api.py:google.generativeai as genai"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.ai"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['content_types']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types"}, {"id": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']"}, {"id": "metagpt/provider/google_gemini_api.py:module:tenacity"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['register_provider']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']"}, {"id": "{\"lineno\":29,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":143,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['LLMType']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']"}, {"id": "{\"lineno\":20,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"id": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS"}, {"id": "metagpt/provider/fireworks_api.py:re"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:module:openai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']"}, {"id": "metagpt/provider/fireworks_api.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.logs"}, {"id": "metagpt/provider/fireworks_api.py:names:['logger']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['register_provider']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"id": "metagpt/provider/ollama_api.py:json"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:module:requests"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/ollama_api.py:module:tenacity"}, {"id": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['register_provider']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['TokenCostManager']"}, {"id": "{\"lineno\":27,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py"}, {"id": "metagpt/provider/__init__.py:__all__"}, {"id": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['FireworksLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['GeminiLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OllamaLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['MetaGPTLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.human_provider"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['HumanProvider']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.spark_api"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['SparkLLM']"}, {"id": "{\"lineno\":20,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"id": "metagpt/provider/openai_api.py:log_and_reraise"}, {"id": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "metagpt/provider/openai_api.py:json"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Optional', 'Union']"}, {"id": "metagpt/provider/openai_api.py:module:openai"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']"}, {"id": "metagpt/provider/openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']"}, {"id": "metagpt/provider/openai_api.py:module:tenacity"}, {"id": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.constant"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA', 'GENERAL_TOOL_CHOICE']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['Message']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CostManager', 'Costs']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['handle_exception']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":33,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']"}, {"id": "{\"lineno\":40,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":245,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"id": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:_thread as thread"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:base64"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hashlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hmac"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:json"}, {"id": "metagpt/provider/spark_api.py:ssl"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:time"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['mktime']"}, {"id": "metagpt/provider/spark_api.py:module:urllib.parse"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']"}, {"id": "metagpt/provider/spark_api.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['format_date_time']"}, {"id": "metagpt/provider/spark_api.py:websocket"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.logs"}, {"id": "metagpt/provider/spark_api.py:names:['logger']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/spark_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['register_provider']"}, {"id": "{\"lineno\":26,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"id": "metagpt/provider/general_api_requestor.py:asyncio"}, {"id": "metagpt/provider/general_api_requestor.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']"}, {"id": "metagpt/provider/general_api_requestor.py:aiohttp"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:requests"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.logs"}, {"id": "metagpt/provider/general_api_requestor.py:names:['logger']"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']"}, {"id": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":104,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:__init__"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"id": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:json"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:module:abc"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/provider/base_llm.py:module:typing"}, {"id": "metagpt/provider/base_llm.py:names:['Optional', 'Union']"}, {"id": "metagpt/provider/base_llm.py:module:openai"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['AsyncOpenAI']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.configs.llm_config"}, {"id": "metagpt/provider/base_llm.py:names:['LLMConfig']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.logs"}, {"id": "metagpt/provider/base_llm.py:names:['logger']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.schema"}, {"id": "metagpt/provider/base_llm.py:names:['Message']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.utils.cost_manager"}, {"id": "metagpt/provider/base_llm.py:names:['CostManager']"}, {"id": "{\"lineno\":21,\"end_lineno\":151,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/constant.py"}, {"id": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA"}, {"id": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE"}, {"id": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/zhipuai_api.py:module:enum"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['Enum']"}, {"id": "metagpt/provider/zhipuai_api.py:openai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:zhipuai"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:module:requests"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/zhipuai_api.py:module:tenacity"}, {"id": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.configs.llm_config"}, {"id": "metagpt/provider/zhipuai_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "metagpt/provider/zhipuai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']"}, {"id": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_base.py:_console_log_level"}, {"id": "metagpt/provider/general_api_base.py:log_debug"}, {"id": "metagpt/provider/general_api_base.py:log_info"}, {"id": "metagpt/provider/general_api_base.py:log_warn"}, {"id": "metagpt/provider/general_api_base.py:logfmt"}, {"id": "metagpt/provider/general_api_base.py:_build_api_url"}, {"id": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_make_session"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_base.py:parse_stream"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"id": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"id": "metagpt/provider/general_api_base.py:logger"}, {"id": "metagpt/provider/general_api_base.py:TIMEOUT_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES"}, {"id": "metagpt/provider/general_api_base.py:_thread_context"}, {"id": "metagpt/provider/general_api_base.py:LLM_LOG"}, {"id": "metagpt/provider/general_api_base.py:api_key_to_header"}, {"id": "metagpt/provider/general_api_base.py:asyncio"}, {"id": "metagpt/provider/general_api_base.py:json"}, {"id": "metagpt/provider/general_api_base.py:os"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:platform"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:threading"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:time"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:contextlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']"}, {"id": "metagpt/provider/general_api_base.py:module:enum"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['Enum']"}, {"id": "metagpt/provider/general_api_base.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']"}, {"id": "metagpt/provider/general_api_base.py:module:urllib.parse"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']"}, {"id": "metagpt/provider/general_api_base.py:aiohttp"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:requests"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys.version_info"}, {"id": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:logging"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:openai"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:openai"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['version']"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"id": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"id": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"id": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"id": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"id": "metagpt/provider/llm_provider_registry.py:create_llm_instance"}, {"id": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY"}, {"id": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['BaseLLM']"}, {"id": "{\"lineno\":12,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":36,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_llm_instance\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['LLMType']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['register_provider']"}, {"id": "{\"lineno\":14,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs"}, {"id": "metagpt/provider/open_llm_api.py:module:openai.types"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['logger']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['register_provider']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['Costs', 'TokenCostManager']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":16,\"end_lineno\":47,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:__init__"}, {"id": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n"}, {"id": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['Optional']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['LLMConfig']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.logs"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['logger']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/human_provider.py:names:['BaseLLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:json"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:names:['Any', 'Iterator']"}, {"id": "{\"lineno\":10,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/__init__.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:json"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZhipuAI']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.core._http_client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZHIPUAI_DEFAULT_TIMEOUT']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']"}, {"id": "{\"lineno\":14,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/__init__.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']"}, {"id": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']"}, {"id": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"id": "metagpt/management/__init__.py"}, {"id": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"id": "metagpt/management/skill_manager.py:Skill"}, {"id": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['Action']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.const"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['ChromaStore']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.logs"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['logger']"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:__name__:__main__"}, {"id": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:Engineer:__init__"}, {"id": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"id": "metagpt/roles/engineer.py:Engineer:_act"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change"}, {"id": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"id": "metagpt/roles/engineer.py:Engineer:_think"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action"}, {"id": "metagpt/roles/engineer.py:IS_PASS_PROMPT"}, {"id": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:__future__"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['annotations']"}, {"id": "metagpt/roles/engineer.py:json"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:os"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:collections"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['defaultdict']"}, {"id": "metagpt/roles/engineer.py:module:pathlib"}, {"id": "metagpt/roles/engineer.py:names:['Path']"}, {"id": "metagpt/roles/engineer.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Set']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['FixBug']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['REFINED_TASK_LIST', 'TASK_LIST']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.write_code_plan_and_change_an"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['WriteCodePlanAndChange']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.logs"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['logger']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.roles"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Role']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":42,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":52,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":360,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"id": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.logs"}, {"id": "metagpt/roles/qa_engineer.py:names:['logger']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.roles"}, {"id": "metagpt/roles/qa_engineer.py:names:['Role']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']"}, {"id": "{\"lineno\":27,\"end_lineno\":181,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:Teacher:__init__"}, {"id": "metagpt/roles/teacher.py:Teacher:_think"}, {"id": "metagpt/roles/teacher.py:Teacher:_react"}, {"id": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:re"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['UserRequirement']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.logs"}, {"id": "metagpt/roles/teacher.py:names:['logger']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.roles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Role']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Message']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['any_to_str', 'awrite']"}, {"id": "{\"lineno\":22,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"id": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['PrepareDocuments']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['Role']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['any_to_name']"}, {"id": "{\"lineno\":16,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:Sales:__init__"}, {"id": "metagpt/roles/sales.py:Sales:_set_store"}, {"id": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Optional']"}, {"id": "metagpt/roles/sales.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Field']"}, {"id": "metagpt/roles/sales.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']"}, {"id": "metagpt/roles/sales.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/sales.py:names:['BaseStore']"}, {"id": "metagpt/roles/sales.py:module:metagpt.roles"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Role']"}, {"id": "metagpt/roles/sales.py:module:metagpt.tools"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":19,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:Searcher:__init__"}, {"id": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"id": "metagpt/roles/searcher.py:Searcher:_act"}, {"id": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:module:pydantic"}, {"id": "metagpt/roles/searcher.py:names:['Field']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchAndSummarize']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionNode']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionOutput']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/searcher.py:names:['logger']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.roles"}, {"id": "metagpt/roles/searcher.py:names:['Role']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/searcher.py:names:['Message']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.tools"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":22,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:Assistant:__init__"}, {"id": "metagpt/roles/assistant.py:Assistant:_plan"}, {"id": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:module:enum"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Enum']"}, {"id": "metagpt/roles/assistant.py:module:pathlib"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Path']"}, {"id": "metagpt/roles/assistant.py:module:typing"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Optional']"}, {"id": "metagpt/roles/assistant.py:module:pydantic"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Field']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['TalkAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['SkillsDeclaration']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/assistant.py:names:['logger']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['BrainMemory']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.roles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Role']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Message']"}, {"id": "{\"lineno\":32,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py"}, {"id": "metagpt/roles/__init__.py:__all__"}, {"id": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Role']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.architect"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Architect']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProjectManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProductManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.engineer"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Engineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['QaEngineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.searcher"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Searcher']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.sales"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Sales']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['CustomerService']"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:Role:__init__"}, {"id": "metagpt/roles/role.py:Role:_reset"}, {"id": "metagpt/roles/role.py:Role:_setting"}, {"id": "metagpt/roles/role.py:Role:_check_actions"}, {"id": "metagpt/roles/role.py:Role:_init_action"}, {"id": "metagpt/roles/role.py:Role:_set_react_mode"}, {"id": "metagpt/roles/role.py:Role:_watch"}, {"id": "metagpt/roles/role.py:Role:_set_state"}, {"id": "metagpt/roles/role.py:Role:_get_prefix"}, {"id": "metagpt/roles/role.py:Role:_think"}, {"id": "metagpt/roles/role.py:Role:_act"}, {"id": "metagpt/roles/role.py:Role:_observe"}, {"id": "metagpt/roles/role.py:Role:_react"}, {"id": "metagpt/roles/role.py:Role:_act_by_order"}, {"id": "metagpt/roles/role.py:Role:_plan_and_act"}, {"id": "metagpt/roles/role.py:PREFIX_TEMPLATE"}, {"id": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE"}, {"id": "metagpt/roles/role.py:STATE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ROLE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:module:__future__"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/role.py:names:['annotations']"}, {"id": "metagpt/roles/role.py:module:enum"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/role.py:names:['Enum']"}, {"id": "metagpt/roles/role.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"id": "metagpt/roles/role.py:names:['Any', 'Iterable', 'Optional', 'Set', 'Type', 'Union']"}, {"id": "metagpt/roles/role.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/roles/role.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/role.py:names:['ActionNode']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/role.py:names:['UserRequirement']"}, {"id": "metagpt/roles/role.py:module:metagpt.context_mixin"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['ContextMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.logs"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/role.py:names:['logger']"}, {"id": "metagpt/roles/role.py:module:metagpt.memory"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/roles/role.py:names:['Memory']"}, {"id": "metagpt/roles/role.py:module:metagpt.provider"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/roles/role.py:names:['HumanProvider']"}, {"id": "metagpt/roles/role.py:module:metagpt.schema"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"id": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'role_raise_decorator']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/roles/role.py:names:['ProjectRepo']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"id": "metagpt/roles/role.py:names:['extract_state_value_from_output']"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":80,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":556,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n"}, {"id": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:json"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']"}, {"id": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:Architect:__init__"}, {"id": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WritePRD']"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WriteDesign']"}, {"id": "metagpt/roles/architect.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/architect.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"id": "metagpt/roles/customer_service.py:DESC"}, {"id": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "metagpt/roles/customer_service.py:module:typing"}, {"id": "metagpt/roles/customer_service.py:names:['Optional']"}, {"id": "metagpt/roles/customer_service.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Field']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['BaseStore']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.roles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Sales']"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"id": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']"}, {"id": "metagpt/roles/sk_agent.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Field']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Kernel']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ActionPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['UserRequirement']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ExecuteTask']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.logs"}, {"id": "metagpt/roles/sk_agent.py:names:['logger']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.roles"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Role']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.schema"}, {"id": "metagpt/roles/sk_agent.py:names:['Message']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']"}, {"id": "{\"lineno\":26,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:PREFIX"}, {"id": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS"}, {"id": "metagpt/roles/prompt.py:SUFFIX"}, {"id": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:module:enum"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/prompt.py:names:['Enum']"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"id": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:module:datetime"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['datetime']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Dict']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['logger']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Message']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['File']"}, {"id": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"id": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/roles/project_manager.py:names:['WriteTasks']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api"}, {"id": "metagpt/roles/project_manager.py:names:['WriteDesign']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.roles.role"}, {"id": "metagpt/roles/project_manager.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:Researcher:__init__"}, {"id": "metagpt/roles/researcher.py:Researcher:_think"}, {"id": "metagpt/roles/researcher.py:Researcher:_act"}, {"id": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:asyncio"}, {"id": "metagpt/roles/researcher.py:re"}, {"id": "metagpt/roles/researcher.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['BaseModel']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['get_research_system_text']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/researcher.py:names:['logger']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/researcher.py:names:['Message']"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:__name__:__main__"}, {"id": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py"}, {"id": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"id": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"id": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"id": "metagpt/utils/serialize.py:serialize_message"}, {"id": "metagpt/utils/serialize.py:deserialize_message"}, {"id": "metagpt/utils/serialize.py:copy"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:pickle"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/serialize.py:names:['import_class']"}, {"id": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:__init__"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:__init__"}, {"id": "metagpt/utils/project_repo.py:ast.Constant:\n@Time : 2024/1/8\n@Author : mashenquan\n@File : project_repo.py\n@Desc : Wrapper for GitRepository and FileRepository of project.\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/8\\n@Author : mashenquan\\n@File : project_repo.py\\n@Desc : Wrapper for GitRepository and FileRepository of project.\\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/project_repo.py:module:__future__"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['annotations']"}, {"id": "metagpt/utils/project_repo.py:module:pathlib"}, {"id": "metagpt/utils/project_repo.py:names:['Path']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['CLASS_VIEW_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_PDF_FILE_REPO', 'CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DATA_API_DESIGN_FILE_REPO', 'DOCS_FILE_REPO', 'GRAPH_REPO_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME', 'RESOURCES_FILE_REPO', 'SD_OUTPUT_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO', 'VISUAL_GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['FileRepository']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['GitRepository']"}, {"id": "{\"lineno\":42,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocFileRepositories\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResourceFileRepositories\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":142,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectRepo\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py"}, {"id": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:os"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:module:urllib.parse"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"id": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:__future__"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['annotations']"}, {"id": "metagpt/utils/dependency_file.py:json"}, {"id": "metagpt/utils/dependency_file.py:re"}, {"id": "metagpt/utils/dependency_file.py:module:pathlib"}, {"id": "metagpt/utils/dependency_file.py:names:['Path']"}, {"id": "metagpt/utils/dependency_file.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['Set']"}, {"id": "metagpt/utils/dependency_file.py:aiofiles"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['aread']"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['handle_exception']"}, {"id": "{\"lineno\":22,\"end_lineno\":108,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py"}, {"id": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"id": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion"}, {"id": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:metagpt.config2"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['config']"}, {"id": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py"}, {"id": "metagpt/utils/token_counter.py:count_message_tokens"}, {"id": "metagpt/utils/token_counter.py:count_string_tokens"}, {"id": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"id": "metagpt/utils/token_counter.py:TOKEN_COSTS"}, {"id": "metagpt/utils/token_counter.py:TOKEN_MAX"}, {"id": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://openai.com/pricing\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref5: https://ai.google.dev/models/gemini\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://openai.com/pricing\\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref5: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py:tiktoken"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"id": "{\"lineno\":64,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":138,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":141,\"end_lineno\":153,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"id": "metagpt/utils/embedding.py"}, {"id": "metagpt/utils/embedding.py:get_embedding"}, {"id": "metagpt/utils/embedding.py:ast.Constant:\n@Time : 2024/1/4 20:58\n@Author : alexanderwu\n@File : embedding.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 20:58\\n@Author : alexanderwu\\n@File : embedding.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/embedding.py:module:langchain_community.embeddings"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/utils/embedding.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/utils/embedding.py:module:metagpt.config2"}, {"id": "metagpt/utils/embedding.py:names:['config']"}, {"id": "{\"lineno\":13,\"end_lineno\":16,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_embedding\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"id": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"id": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"id": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:copy"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:enum"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:regex as re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['config']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['logger']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":108,\"end_lineno\":132,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"id": "{\"lineno\":135,\"end_lineno\":146,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":170,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":173,\"end_lineno\":220,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"id": "{\"lineno\":223,\"end_lineno\":257,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"id": "{\"lineno\":265,\"end_lineno\":279,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"id": "{\"lineno\":282,\"end_lineno\":312,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":315,\"end_lineno\":328,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py"}, {"id": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"id": "metagpt/utils/mermaid.py:MMC1"}, {"id": "metagpt/utils/mermaid.py:MMC2"}, {"id": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py:asyncio"}, {"id": "metagpt/utils/mermaid.py:os"}, {"id": "metagpt/utils/mermaid.py:module:pathlib"}, {"id": "metagpt/utils/mermaid.py:names:['Path']"}, {"id": "metagpt/utils/mermaid.py:aiofiles"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.config2"}, {"id": "metagpt/utils/mermaid.py:names:['config']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.logs"}, {"id": "metagpt/utils/mermaid.py:names:['logger']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"id": "metagpt/utils/mermaid.py:names:['check_cmd_exists']"}, {"id": "{\"lineno\":19,\"end_lineno\":90,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":145,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"id": "metagpt/utils/parse_html.py:get_html_content"}, {"id": "metagpt/utils/parse_html.py:_get_soup"}, {"id": "metagpt/utils/parse_html.py:module:__future__"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['annotations']"}, {"id": "metagpt/utils/parse_html.py:module:typing"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']"}, {"id": "metagpt/utils/parse_html.py:module:urllib.parse"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']"}, {"id": "metagpt/utils/parse_html.py:module:bs4"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BeautifulSoup']"}, {"id": "metagpt/utils/parse_html.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']"}, {"id": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name"}, {"id": "metagpt/utils/visual_graph_repo.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : visualize_graph.py\n@Desc : Visualize the graph.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : visualize_graph.py\\n@Desc : Visualize the graph.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:module:__future__"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['annotations']"}, {"id": "metagpt/utils/visual_graph_repo.py:re"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:module:abc"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['ABC']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:pathlib"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['Path']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['List', 'Optional']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.schema"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['UMLClassView']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['split_namespace']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['DiGraphRepository']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"_VisualClassView\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualGraphRepo\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualDiGraphRepo\"],\"properties\":{}}"}, {"id": "metagpt/utils/special_tokens.py"}, {"id": "metagpt/utils/special_tokens.py:MSG_SEP"}, {"id": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py"}, {"id": "metagpt/utils/ahttp_client.py:apost"}, {"id": "metagpt/utils/ahttp_client.py:apost_stream"}, {"id": "metagpt/utils/ahttp_client.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']"}, {"id": "metagpt/utils/ahttp_client.py:aiohttp"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py:module:aiohttp.client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']"}, {"id": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py"}, {"id": "metagpt/utils/__init__.py:__all__"}, {"id": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.read_document"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['read_docx']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.singleton"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['Singleton']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py"}, {"id": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:base64"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:module:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"id": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']"}, {"id": "metagpt/utils/mmdc_ink.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_ink.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"id": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:__future__"}, {"id": "metagpt/utils/di_graph_repository.py:names:['annotations']"}, {"id": "metagpt/utils/di_graph_repository.py:json"}, {"id": "metagpt/utils/di_graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/di_graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/di_graph_repository.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['List']"}, {"id": "metagpt/utils/di_graph_repository.py:networkx"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']"}, {"id": "{\"lineno\":21,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:ast.Constant:\n@Time : 2024/1/4 10:18\n@Author : alexanderwu\n@File : YamlModel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 10:18\\n@Author : alexanderwu\\n@File : YamlModel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:module:pathlib"}, {"id": "metagpt/utils/yaml_model.py:names:['Path']"}, {"id": "metagpt/utils/yaml_model.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/utils/yaml_model.py:names:['Dict', 'Optional']"}, {"id": "metagpt/utils/yaml_model.py:yaml"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:module:pydantic"}, {"id": "metagpt/utils/yaml_model.py:names:['BaseModel', 'model_validator']"}, {"id": "{\"lineno\":15,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModelWithoutDefault\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['NamedTuple']"}, {"id": "metagpt/utils/cost_manager.py:module:pydantic"}, {"id": "metagpt/utils/cost_manager.py:names:['BaseModel']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.logs"}, {"id": "metagpt/utils/cost_manager.py:names:['logger']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":99,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TokenCostManager\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:pathlib"}, {"id": "metagpt/utils/file.py:names:['Path']"}, {"id": "metagpt/utils/file.py:aiofiles"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:metagpt.logs"}, {"id": "metagpt/utils/file.py:names:['logger']"}, {"id": "metagpt/utils/file.py:module:metagpt.utils.exceptions"}, {"id": "metagpt/utils/file.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"id": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"id": "metagpt/utils/common.py:check_cmd_exists"}, {"id": "metagpt/utils/common.py:require_python_version"}, {"id": "metagpt/utils/common.py:print_members"}, {"id": "metagpt/utils/common.py:parse_recipient"}, {"id": "metagpt/utils/common.py:get_class_name"}, {"id": "metagpt/utils/common.py:any_to_str"}, {"id": "metagpt/utils/common.py:any_to_str_set"}, {"id": "metagpt/utils/common.py:is_send_to"}, {"id": "metagpt/utils/common.py:any_to_name"}, {"id": "metagpt/utils/common.py:concat_namespace"}, {"id": "metagpt/utils/common.py:split_namespace"}, {"id": "metagpt/utils/common.py:general_after_log"}, {"id": "metagpt/utils/common.py:read_json_file"}, {"id": "metagpt/utils/common.py:write_json_file"}, {"id": "metagpt/utils/common.py:import_class"}, {"id": "metagpt/utils/common.py:import_class_inst"}, {"id": "metagpt/utils/common.py:format_trackback_info"}, {"id": "metagpt/utils/common.py:serialize_decorator"}, {"id": "metagpt/utils/common.py:role_raise_decorator"}, {"id": "metagpt/utils/common.py:aread"}, {"id": "metagpt/utils/common.py:awrite"}, {"id": "metagpt/utils/common.py:read_file_block"}, {"id": "metagpt/utils/common.py:list_files"}, {"id": "metagpt/utils/common.py:parse_json_code_block"}, {"id": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:__future__"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/common.py:names:['annotations']"}, {"id": "metagpt/utils/common.py:ast"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:contextlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:importlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:inspect"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:json"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:os"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:platform"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:re"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:sys"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:traceback"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:typing"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:pathlib"}, {"id": "metagpt/utils/common.py:names:['Path']"}, {"id": "metagpt/utils/common.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/utils/common.py:names:['Any', 'List', 'Tuple', 'Union']"}, {"id": "metagpt/utils/common.py:aiofiles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:loguru"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:pydantic_core"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"id": "metagpt/utils/common.py:names:['to_jsonable_python']"}, {"id": "metagpt/utils/common.py:module:tenacity"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"id": "metagpt/utils/common.py:names:['RetryCallState', 'RetryError', '_utils']"}, {"id": "metagpt/utils/common.py:module:metagpt.const"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"id": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']"}, {"id": "metagpt/utils/common.py:module:metagpt.logs"}, {"id": "metagpt/utils/common.py:names:['logger']"}, {"id": "metagpt/utils/common.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/common.py:names:['handle_exception']"}, {"id": "{\"lineno\":38,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":231,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":234,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":307,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"id": "{\"lineno\":319,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"id": "{\"lineno\":338,\"end_lineno\":348,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"id": "{\"lineno\":351,\"end_lineno\":353,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":356,\"end_lineno\":363,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":366,\"end_lineno\":381,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"id": "{\"lineno\":384,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_send_to\"],\"properties\":{}}"}, {"id": "{\"lineno\":395,\"end_lineno\":403,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":406,\"end_lineno\":407,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":410,\"end_lineno\":411,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":414,\"end_lineno\":444,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"id": "{\"lineno\":447,\"end_lineno\":456,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":459,\"end_lineno\":465,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":468,\"end_lineno\":471,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"id": "{\"lineno\":474,\"end_lineno\":477,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"id": "{\"lineno\":480,\"end_lineno\":481,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":484,\"end_lineno\":495,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":498,\"end_lineno\":525,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":529,\"end_lineno\":533,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"id": "{\"lineno\":536,\"end_lineno\":541,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"id": "{\"lineno\":544,\"end_lineno\":558,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"id": "{\"lineno\":561,\"end_lineno\":575,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"list_files\"],\"properties\":{}}"}, {"id": "{\"lineno\":578,\"end_lineno\":580,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_json_code_block\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:Redis:__init__"}, {"id": "metagpt/utils/redis.py:Redis:_connect"}, {"id": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:__future__"}, {"id": "metagpt/utils/redis.py:names:['annotations']"}, {"id": "metagpt/utils/redis.py:traceback"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:datetime"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"id": "metagpt/utils/redis.py:names:['timedelta']"}, {"id": "metagpt/utils/redis.py:aioredis"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:metagpt.configs.redis_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"id": "metagpt/utils/redis.py:names:['RedisConfig']"}, {"id": "metagpt/utils/redis.py:module:metagpt.logs"}, {"id": "metagpt/utils/redis.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"id": "metagpt/utils/text.py"}, {"id": "metagpt/utils/text.py:reduce_message_length"}, {"id": "metagpt/utils/text.py:generate_prompt_chunk"}, {"id": "metagpt/utils/text.py:split_paragraph"}, {"id": "metagpt/utils/text.py:decode_unicode_escape"}, {"id": "metagpt/utils/text.py:_split_by_count"}, {"id": "metagpt/utils/text.py:_split_text_with_ends"}, {"id": "metagpt/utils/text.py:module:typing"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"id": "metagpt/utils/text.py:names:['Generator', 'Sequence']"}, {"id": "metagpt/utils/text.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']"}, {"id": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"id": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:module:abc"}, {"id": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/utils/graph_repository.py:module:collections"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['defaultdict']"}, {"id": "metagpt/utils/graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/graph_repository.py:module:typing"}, {"id": "metagpt/utils/graph_repository.py:names:['List']"}, {"id": "metagpt/utils/graph_repository.py:module:pydantic"}, {"id": "metagpt/utils/graph_repository.py:names:['BaseModel']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['DotClassInfo', 'DotClassRelationship', 'RepoFileInfo']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['concat_namespace', 'split_namespace']"}, {"id": "{\"lineno\":21,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:Singleton:__call__"}, {"id": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"id": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:__future__"}, {"id": "metagpt/utils/file_repository.py:names:['annotations']"}, {"id": "metagpt/utils/file_repository.py:json"}, {"id": "metagpt/utils/file_repository.py:os"}, {"id": "metagpt/utils/file_repository.py:module:datetime"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['datetime']"}, {"id": "metagpt/utils/file_repository.py:module:pathlib"}, {"id": "metagpt/utils/file_repository.py:names:['Path']"}, {"id": "metagpt/utils/file_repository.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']"}, {"id": "metagpt/utils/file_repository.py:aiofiles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/file_repository.py:names:['logger']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Document']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['aread']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['json_to_markdown']"}, {"id": "{\"lineno\":25,\"end_lineno\":240,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"id": "metagpt/utils/pycst.py:get_docstring_statement"}, {"id": "metagpt/utils/pycst.py:has_decorator"}, {"id": "metagpt/utils/pycst.py:merge_docstring"}, {"id": "metagpt/utils/pycst.py:DocstringNode"}, {"id": "metagpt/utils/pycst.py:module:__future__"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['annotations']"}, {"id": "metagpt/utils/pycst.py:module:typing"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Union']"}, {"id": "metagpt/utils/pycst.py:libcst as cst"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:module:libcst._nodes.module"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Module']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"id": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py"}, {"id": "metagpt/utils/exceptions.py:handle_exception"}, {"id": "metagpt/utils/exceptions.py:ReturnType"}, {"id": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:asyncio"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:traceback"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/utils/exceptions.py:module:metagpt.logs"}, {"id": "metagpt/utils/exceptions.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"id": "metagpt/utils/human_interaction.py:json"}, {"id": "metagpt/utils/human_interaction.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['Any', 'Tuple', 'Type']"}, {"id": "metagpt/utils/human_interaction.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['BaseModel']"}, {"id": "metagpt/utils/human_interaction.py:module:metagpt.logs"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['logger']"}, {"id": "metagpt/utils/human_interaction.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['import_class']"}, {"id": "{\"lineno\":14,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanInteraction\"],\"properties\":{}}"}, {"id": "metagpt/utils/highlight.py"}, {"id": "metagpt/utils/highlight.py:highlight"}, {"id": "metagpt/utils/highlight.py:module:pygments"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['highlight as highlight_']"}, {"id": "metagpt/utils/highlight.py:module:pygments.formatters"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']"}, {"id": "metagpt/utils/highlight.py:module:pygments.lexers"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']"}, {"id": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:os"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config2"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['config']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:S3:__init__"}, {"id": "metagpt/utils/s3.py:base64"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:os.path"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:traceback"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:uuid"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:pathlib"}, {"id": "metagpt/utils/s3.py:names:['Path']"}, {"id": "metagpt/utils/s3.py:module:typing"}, {"id": "metagpt/utils/s3.py:names:['Optional']"}, {"id": "metagpt/utils/s3.py:aioboto3"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:aiofiles"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"id": "metagpt/utils/s3.py:names:['S3Config']"}, {"id": "metagpt/utils/s3.py:module:metagpt.const"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/utils/s3.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/utils/s3.py:module:metagpt.logs"}, {"id": "metagpt/utils/s3.py:names:['logger']"}, {"id": "{\"lineno\":16,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"id": "metagpt/utils/json_to_markdown.py"}, {"id": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"id": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"id": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"id": "metagpt/utils/custom_decoder.py:JSONObject"}, {"id": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"id": "metagpt/utils/custom_decoder.py:NUMBER_RE"}, {"id": "metagpt/utils/custom_decoder.py:FLAGS"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:BACKSLASH"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE_STR"}, {"id": "metagpt/utils/custom_decoder.py:scanstring"}, {"id": "metagpt/utils/custom_decoder.py:json"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:re"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:module:json"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']"}, {"id": "metagpt/utils/custom_decoder.py:module:json.decoder"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"id": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"id": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:__future__"}, {"id": "metagpt/utils/git_repository.py:names:['annotations']"}, {"id": "metagpt/utils/git_repository.py:shutil"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:enum"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Enum']"}, {"id": "metagpt/utils/git_repository.py:module:pathlib"}, {"id": "metagpt/utils/git_repository.py:names:['Path']"}, {"id": "metagpt/utils/git_repository.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Dict', 'List']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Repo']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo.fun"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['is_git_dir']"}, {"id": "metagpt/utils/git_repository.py:module:gitignore_parser"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['parse_gitignore']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/git_repository.py:names:['logger']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['DependencyFile']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['FileRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":285,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py"}, {"id": "metagpt/utils/read_document.py:read_docx"}, {"id": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py:docx"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"id": "metagpt/configs/s3_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : s3_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : s3_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/s3_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"id": "metagpt/configs/s3_config.py:names:['YamlModelWithoutDefault']"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3Config\"],\"properties\":{}}"}, {"id": "metagpt/configs/browser_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : browser_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : browser_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/browser_config.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['Literal']"}, {"id": "metagpt/configs/browser_config.py:module:metagpt.tools"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/configs/browser_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrowserConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/workspace_config.py:ast.Constant:\n@Time : 2024/1/4 19:09\n@Author : alexanderwu\n@File : workspace_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:09\\n@Author : alexanderwu\\n@File : workspace_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/workspace_config.py:module:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['datetime']"}, {"id": "metagpt/configs/workspace_config.py:module:pathlib"}, {"id": "metagpt/configs/workspace_config.py:names:['Path']"}, {"id": "metagpt/configs/workspace_config.py:module:uuid"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['uuid4']"}, {"id": "metagpt/configs/workspace_config.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['field_validator', 'model_validator']"}, {"id": "metagpt/configs/workspace_config.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['DEFAULT_WORKSPACE_ROOT']"}, {"id": "metagpt/configs/workspace_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":18,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WorkspaceConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/mermaid_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : mermaid_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : mermaid_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/mermaid_config.py:module:typing"}, {"id": "metagpt/configs/mermaid_config.py:names:['Literal']"}, {"id": "metagpt/configs/mermaid_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/mermaid_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MermaidConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/__init__.py"}, {"id": "metagpt/configs/__init__.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/llm_config.py:LLMType:__missing__"}, {"id": "metagpt/configs/llm_config.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : llm_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/llm_config.py:module:enum"}, {"id": "metagpt/configs/llm_config.py:names:['Enum']"}, {"id": "metagpt/configs/llm_config.py:module:typing"}, {"id": "metagpt/configs/llm_config.py:names:['Optional']"}, {"id": "metagpt/configs/llm_config.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"id": "metagpt/configs/llm_config.py:names:['field_validator']"}, {"id": "metagpt/configs/llm_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/llm_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":16,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMType\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/redis_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : redis_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : redis_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/redis_config.py:module:metagpt.utils.yaml_model"}, {"id": "metagpt/configs/redis_config.py:names:['YamlModelWithoutDefault']"}, {"id": "{\"lineno\":11,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RedisConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/search_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : search_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : search_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/search_config.py:module:metagpt.tools"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/configs/search_config.py:names:['SearchEngineType']"}, {"id": "metagpt/configs/search_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/search_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchConfig\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"id": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Rebuild class view info\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Rebuild class view info\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Optional']"}, {"id": "metagpt/actions/rebuild_class_view.py:aiofiles"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.config2"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['config']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DotClassInfo', 'RepoParser']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['UMLClassView']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['concat_namespace', 'split_namespace']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":32,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Rebuild sequence view info\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Rebuild sequence view info\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:__future__"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['annotations']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:re"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:datetime"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['datetime']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:typing"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['List', 'Optional']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['BaseModel']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:tenacity"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config2"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['config']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['CodeBlockInfo', 'DotClassInfo']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['UMLClassView']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":25,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['aread', 'concat_namespace', 'general_after_log', 'list_files', 'parse_json_code_block', 'read_file_block', 'split_namespace']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['SPO', 'GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":38,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCase\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCaseDetails\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":397,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:json"}, {"id": "metagpt/actions/write_code.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Field']"}, {"id": "metagpt/actions/write_code.py:module:tenacity"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Action']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['REFINED_TASK_LIST', 'TASK_LIST']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.write_code_plan_and_change_an"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['REFINED_TEMPLATE']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.const"}, {"id": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['logger']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":36,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":219,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py"}, {"id": "metagpt/actions/write_prd_an.py:LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT"}, {"id": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/write_prd_an.py:ISSUE_TYPE"}, {"id": "metagpt/actions/write_prd_an.py:IS_RELATIVE"}, {"id": "metagpt/actions/write_prd_an.py:REASON"}, {"id": "metagpt/actions/write_prd_an.py:NODES"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_NODES"}, {"id": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['List']"}, {"id": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":133,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":142,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":157,\"end_lineno\":162,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":169,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":171,\"end_lineno\":176,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"id": "{\"lineno\":178,\"end_lineno\":183,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"id": "{\"lineno\":185,\"end_lineno\":187,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":203,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":205,\"end_lineno\":218,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":220,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":221,\"end_lineno\":221,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":222,\"end_lineno\":222,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":223,\"end_lineno\":223,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:module:pathlib"}, {"id": "metagpt/actions/summarize_code.py:names:['Path']"}, {"id": "metagpt/actions/summarize_code.py:module:pydantic"}, {"id": "metagpt/actions/summarize_code.py:names:['Field']"}, {"id": "metagpt/actions/summarize_code.py:module:tenacity"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['Action']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/summarize_code.py:names:['logger']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']"}, {"id": "{\"lineno\":17,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__"}, {"id": "metagpt/actions/research.py:ConductResearch:__init__"}, {"id": "metagpt/actions/research.py:get_research_system_text"}, {"id": "metagpt/actions/research.py:LANG_PROMPT"}, {"id": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM"}, {"id": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM"}, {"id": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT"}, {"id": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT"}, {"id": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:module:__future__"}, {"id": "metagpt/actions/research.py:names:['annotations']"}, {"id": "metagpt/actions/research.py:asyncio"}, {"id": "metagpt/actions/research.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/actions/research.py:names:['Callable', 'Optional', 'Union']"}, {"id": "metagpt/actions/research.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"id": "metagpt/actions/research.py:names:['Field', 'parse_obj_as']"}, {"id": "metagpt/actions/research.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/research.py:names:['Action']"}, {"id": "metagpt/actions/research.py:module:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/actions/research.py:names:['config']"}, {"id": "metagpt/actions/research.py:module:metagpt.logs"}, {"id": "metagpt/actions/research.py:names:['logger']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/research.py:names:['SearchEngine']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/actions/research.py:names:['WebBrowserEngine', 'WebBrowserEngineType']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/research.py:names:['OutputParser']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.text"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"id": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":25,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":171,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"id": "{\"lineno\":174,\"end_lineno\":237,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"id": "{\"lineno\":240,\"end_lineno\":265,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"id": "{\"lineno\":268,\"end_lineno\":278,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:__future__"}, {"id": "metagpt/actions/skill_action.py:names:['annotations']"}, {"id": "metagpt/actions/skill_action.py:ast"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:importlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:traceback"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:copy"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['deepcopy']"}, {"id": "metagpt/actions/skill_action.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Action']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Skill']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/skill_action.py:names:['logger']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.schema"}, {"id": "metagpt/actions/skill_action.py:names:['Message']"}, {"id": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:module:typing"}, {"id": "metagpt/actions/write_test.py:names:['Optional']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_test.py:names:['Action']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_test.py:names:['logger']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:re"}, {"id": "metagpt/actions/debug_error.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Field']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Action']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.logs"}, {"id": "metagpt/actions/debug_error.py:names:['logger']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['CodeParser']"}, {"id": "{\"lineno\":20,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"id": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:json"}, {"id": "metagpt/actions/design_api.py:module:pathlib"}, {"id": "metagpt/actions/design_api.py:names:['Path']"}, {"id": "metagpt/actions/design_api.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Optional']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an"}, {"id": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_STRUCTURES_AND_INTERFACES', 'DESIGN_API_NODE', 'PROGRAM_CALL_FLOW', 'REFINED_DATA_STRUCTURES_AND_INTERFACES', 'REFINED_DESIGN_NODE', 'REFINED_PROGRAM_CALL_FLOW']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.const"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'SEQ_FLOW_FILE_REPO']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.logs"}, {"id": "metagpt/actions/design_api.py:names:['logger']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py"}, {"id": "metagpt/actions/design_api_an.py:main"}, {"id": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/design_api_an.py:FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/design_api_an.py:NODES"}, {"id": "metagpt/actions/design_api_an.py:REFINED_NODES"}, {"id": "metagpt/actions/design_api_an.py:DESIGN_API_NODE"}, {"id": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE"}, {"id": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:module:typing"}, {"id": "metagpt/actions/design_api_an.py:names:['List']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/design_api_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/design_api_an.py:names:['logger']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"id": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DESIGN_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:__name__:__main__"}, {"id": "{\"lineno\":121,\"end_lineno\":122,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"id": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/action_output.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_outcls_registry.py"}, {"id": "metagpt/actions/action_outcls_registry.py:register_action_outcls"}, {"id": "metagpt/actions/action_outcls_registry.py:action_outcls_registry"}, {"id": "metagpt/actions/action_outcls_registry.py:module:functools"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"id": "metagpt/actions/action_outcls_registry.py:names:['wraps']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"action_outcls_registry\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_action_outcls\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:module:metagpt.actions"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/add_requirement.py:names:['Action']"}, {"id": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py"}, {"id": "metagpt/actions/__init__.py:ActionType"}, {"id": "metagpt/actions/__init__.py:__all__"}, {"id": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py:module:enum"}, {"id": "metagpt/actions/__init__.py:names:['Enum']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['Action']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['ActionOutput']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['UserRequirement']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DebugError']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteDesign']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DesignReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.project_management"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTasks']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.run_code"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['RunCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['SearchAndSummarize']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCodeReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRD']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRDReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_test"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTest']"}, {"id": "{\"lineno\":27,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:REVIEW"}, {"id": "metagpt/actions/write_review.py:LGTM"}, {"id": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE"}, {"id": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_review.py:names:['List']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_review.py:names:['Action']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/write_review.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"id": "metagpt/actions/action.py:Action:__str__"}, {"id": "metagpt/actions/action.py:Action:__repr__"}, {"id": "metagpt/actions/action.py:Action:_aask"}, {"id": "metagpt/actions/action.py:Action:_run_action_node"}, {"id": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:module:__future__"}, {"id": "metagpt/actions/action.py:names:['annotations']"}, {"id": "metagpt/actions/action.py:module:typing"}, {"id": "metagpt/actions/action.py:names:['Optional', 'Union']"}, {"id": "metagpt/actions/action.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/actions/action.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/action.py:names:['ActionNode']"}, {"id": "metagpt/actions/action.py:module:metagpt.context_mixin"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"id": "metagpt/actions/action.py:names:['ContextMixin']"}, {"id": "metagpt/actions/action.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/action.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']"}, {"id": "metagpt/actions/action.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/action.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":28,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.actions"}, {"id": "metagpt/actions/execute_task.py:names:['Action']"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.schema"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/execute_task.py:names:['Message']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_related"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"id": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:__future__"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['annotations']"}, {"id": "metagpt/actions/write_prd.py:json"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:pathlib"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Path']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['FixBug']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an"}, {"id": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['COMPETITIVE_QUADRANT_CHART', 'PROJECT_NAME', 'REFINED_PRD_NODE', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.const"}, {"id": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.logs"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['logger']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.schema"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository"}, {"id": "metagpt/actions/write_prd.py:names:['FileRepository']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":41,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX"}, {"id": "metagpt/actions/write_docstring.py:_python_docstring_style"}, {"id": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n"}, {"id": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:__future__"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['annotations']"}, {"id": "metagpt/actions/write_docstring.py:ast"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:pathlib"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Path']"}, {"id": "metagpt/actions/write_docstring.py:module:typing"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Action']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['merge_docstring']"}, {"id": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"id": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:__name__:__main__"}, {"id": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:module:metagpt.actions"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/fix_bug.py:names:['Action']"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:QUESTIONS"}, {"id": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions"}, {"id": "metagpt/actions/prepare_interview.py:names:['Action']"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/prepare_interview.py:names:['ActionNode']"}, {"id": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_requirements"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_pytest"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"id": "metagpt/actions/run_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT"}, {"id": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:subprocess"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:module:pathlib"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Path']"}, {"id": "metagpt/actions/run_code.py:module:typing"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Tuple']"}, {"id": "metagpt/actions/run_code.py:module:pydantic"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Field']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Action']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['logger']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['handle_exception']"}, {"id": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEMPLATE_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:main"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT"}, {"id": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION"}, {"id": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3"}, {"id": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "metagpt/actions/write_code_an_draft.py:asyncio"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['List', 'Literal']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['Action']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']"}, {"id": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_RESULT\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEXT_STEPS\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_FUNCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":416,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":419,\"end_lineno\":489,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":492,\"end_lineno\":554,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":557,\"end_lineno\":557,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":561,\"end_lineno\":573,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":576,\"end_lineno\":581,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"id": "{\"lineno\":584,\"end_lineno\":585,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:__name__:__main__"}, {"id": "{\"lineno\":588,\"end_lineno\":589,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:module:typing"}, {"id": "metagpt/actions/talk_action.py:names:['Optional']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Action']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.config2"}, {"id": "metagpt/actions/talk_action.py:names:['config']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/talk_action.py:names:['logger']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Message']"}, {"id": "{\"lineno\":17,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:module:typing"}, {"id": "metagpt/actions/write_tutorial.py:names:['Dict']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.actions"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['Action']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['OutputParser']"}, {"id": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:module:typing"}, {"id": "metagpt/actions/write_prd_review.py:names:['Optional']"}, {"id": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_prd_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:QUESTIONS"}, {"id": "metagpt/actions/generate_questions.py:ast.Constant:\n@File : generate_questions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/generate_questions.py:names:['Action']"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/generate_questions.py:names:['ActionNode']"}, {"id": "{\"lineno\":9,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":18,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"id": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:shutil"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:module:pathlib"}, {"id": "metagpt/actions/prepare_documents.py:names:['Path']"}, {"id": "metagpt/actions/prepare_documents.py:module:typing"}, {"id": "metagpt/actions/prepare_documents.py:names:['Optional']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['FileRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['GitRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":21,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD"}, {"id": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Any', 'Optional']"}, {"id": "metagpt/actions/search_and_summarize.py:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['model_validator']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Action']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.logs"}, {"id": "metagpt/actions/search_and_summarize.py:names:['logger']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.schema"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Message']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngineType']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']"}, {"id": "{\"lineno\":19,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION"}, {"id": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:module:pydantic"}, {"id": "metagpt/actions/write_code_review.py:names:['Field']"}, {"id": "metagpt/actions/write_code_review.py:module:tenacity"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['WriteCode']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_code_review.py:names:['Action']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.const"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_code_review.py:names:['logger']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodingContext']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodeParser']"}, {"id": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"id": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:module:typing"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Optional']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Action']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.context"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Context']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py"}, {"id": "metagpt/actions/project_management_an.py:main"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:FULL_API_SPEC"}, {"id": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM"}, {"id": "metagpt/actions/project_management_an.py:NODES"}, {"id": "metagpt/actions/project_management_an.py:REFINED_NODES"}, {"id": "metagpt/actions/project_management_an.py:PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:REFINED_PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:module:typing"}, {"id": "metagpt/actions/project_management_an.py:names:['List']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/project_management_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management_an.py:names:['logger']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":128,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:__name__:__main__"}, {"id": "{\"lineno\":131,\"end_lineno\":132,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"id": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:json"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:module:typing"}, {"id": "metagpt/actions/project_management.py:names:['Optional']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Action']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['ActionOutput']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PM_NODE', 'REFINED_PM_NODE']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.const"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management.py:names:['logger']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.schema"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Document', 'Documents']"}, {"id": "{\"lineno\":23,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"id": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"id": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"id": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req"}, {"id": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment"}, {"id": "metagpt/actions/action_node.py:dict_to_markdown"}, {"id": "metagpt/actions/action_node.py:TAG"}, {"id": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:REVIEW_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:REVISE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:json"}, {"id": "metagpt/actions/action_node.py:module:enum"}, {"id": "metagpt/actions/action_node.py:names:['Enum']"}, {"id": "metagpt/actions/action_node.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type', 'Union']"}, {"id": "metagpt/actions/action_node.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseModel', 'Field', 'create_model', 'model_validator']"}, {"id": "metagpt/actions/action_node.py:module:tenacity"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.actions.action_outcls_registry"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['register_action_outcls']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.llm"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseLLM']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.logs"}, {"id": "metagpt/actions/action_node.py:names:['logger']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['llm_output_postprocess']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.human_interaction"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['HumanInteraction']"}, {"id": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviseMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVISE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":666,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":669,\"end_lineno\":670,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolUse\"],\"properties\":{}}"}, {"id": "{\"lineno\":673,\"end_lineno\":677,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Task\"],\"properties\":{}}"}, {"id": "{\"lineno\":680,\"end_lineno\":681,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Tasks\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:__name__:__main__"}, {"id": "{\"lineno\":684,\"end_lineno\":693,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:ast.Constant:\n@Time : 2023/12/26\n@Author : mannaandpoem\n@File : write_code_plan_and_change_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/26\\n@Author : mannaandpoem\\n@File : write_code_plan_and_change_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:os"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:pydantic"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['Field']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['Action']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['CodePlanAndChangeContext']"}, {"id": "{\"lineno\":16,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":180,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":182,\"end_lineno\":182,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_PLAN_AND_CHANGE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":185,\"end_lineno\":210,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodePlanAndChange\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:module:typing"}, {"id": "metagpt/actions/design_api_review.py:names:['Optional']"}, {"id": "metagpt/actions/design_api_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/design_api_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"id": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:os"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:zipfile"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:module:datetime"}, {"id": "metagpt/actions/invoice_ocr.py:names:['datetime']"}, {"id": "metagpt/actions/invoice_ocr.py:module:pathlib"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Path']"}, {"id": "metagpt/actions/invoice_ocr.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Optional']"}, {"id": "metagpt/actions/invoice_ocr.py:pandas as pd"}, {"id": "metagpt/actions/invoice_ocr.py:module:paddleocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.actions"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Action']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.logs"}, {"id": "metagpt/actions/invoice_ocr.py:names:['logger']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['OutputParser']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['File']"}, {"id": "{\"lineno\":31,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"id": "{\"lineno\":166,\"end_lineno\":189,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"id": "metagpt/prompts/sales.py"}, {"id": "metagpt/prompts/sales.py:SALES_ASSISTANT"}, {"id": "metagpt/prompts/sales.py:SALES"}, {"id": "metagpt/prompts/sales.py:conversation_stages"}, {"id": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"id": "metagpt/prompts/__init__.py"}, {"id": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/prompts/summarize.py"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5"}, {"id": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"id": "metagpt/prompts/metagpt_sample.py"}, {"id": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE"}, {"id": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"id": "metagpt/prompts/tutorial_assistant.py"}, {"id": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/prompts/invoice_ocr.py"}, {"id": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS"}, {"id": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot_schema.py:module:enum"}, {"id": "metagpt/strategy/tot_schema.py:names:['Enum']"}, {"id": "metagpt/strategy/tot_schema.py:module:pydantic"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"id": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"id": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"id": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"id": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"id": "metagpt/strategy/tot.py:OUTPUT_FORMAT"}, {"id": "metagpt/strategy/tot.py:module:__future__"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['annotations']"}, {"id": "metagpt/strategy/tot.py:asyncio"}, {"id": "metagpt/strategy/tot.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']"}, {"id": "metagpt/strategy/tot.py:module:pydantic"}, {"id": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['LLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.logs"}, {"id": "metagpt/strategy/tot.py:names:['logger']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/strategy/tot.py:names:['BaseLLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.utils.common"}, {"id": "metagpt/strategy/tot.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"id": "metagpt/strategy/__init__.py"}, {"id": "metagpt/strategy/base.py:BaseParser:__call__"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"id": "metagpt/strategy/base.py:module:abc"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/strategy/base.py:names:['ABC']"}, {"id": "metagpt/strategy/base.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/strategy/base.py:names:['List']"}, {"id": "metagpt/strategy/base.py:module:anytree"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"id": "metagpt/strategy/base.py:names:['Node', 'RenderTree']"}, {"id": "metagpt/strategy/base.py:module:pydantic"}, {"id": "metagpt/strategy/base.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"id": "{\"name\":\"AIMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"APIRequestor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"AZURE_AD,OPEN_AI\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Action\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"node\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"children\",\"visibility\":\"+\",\"value_type\":\"dict[str,ActionNode]\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"example\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"visibility\":\"+\",\"value_type\":\"Type\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionOutput\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ApiType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Architect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict]\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Assistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AsyncSSEClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"AttrDict\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AudioData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"audio\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ced\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"region\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BEAGECTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseContext\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BaseEvaluator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BaseLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[AsyncOpenAI]]\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseStore\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BrainMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cacheable\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"history_text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_history_available\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"last_talk\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BrowserConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"driver\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BugFixContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CLIParams\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"git_reinit\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChangeType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChromaStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"collection\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Claude2\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeBlockInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"end_lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"properties\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"tokens\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"CodePlanAndChangeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"codes_filenames\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"design_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CollectLinks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rank_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]],None]]\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Components\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ConductResearch\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"AZURE_TTS_REGION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_SECRET\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_APP_ID\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"enable_longterm_memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_report\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid_engine\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"mmdc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"Literal['json','markdown','raw']\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pyppeteer_executable_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"redis\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"s3\",\"visibility\":\"+\",\"value_type\":\"Optional[S3Config]\",\"default_value\":\"\"},{\"name\":\"search\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchConfig]\",\"default_value\":\"\"},{\"name\":\"workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"alias\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Context\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"Optional[GitRepository]\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"Optional[ProjectRepo]\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ContextMixin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"private_config\",\"visibility\":\"+\",\"value_type\":\"Optional[Config]\",\"default_value\":\"\"},{\"name\":\"private_context\",\"visibility\":\"+\",\"value_type\":\"Optional[Context]\",\"default_value\":\"\"},{\"name\":\"private_llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"max_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Costs\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomDecoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"parse_object\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomerService\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ddgs\",\"visibility\":\"+\",\"value_type\":\"DDGS\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DataSource\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DebugError\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DependencyFile\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"exists\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DesignReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DiGraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"pathname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"class_view\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringCollector\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringTransformer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"author\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"reviews\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocumentStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Documents\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"default_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassMethod]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"return_args\",\"visibility\":\"+\",\"value_type\":\"Optional[DotReturn]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassRelationship\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dest\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotReturn\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"object\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Engineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_borg\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_summarize\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"EnronTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Entity\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"List[Skill]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Environment\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"member_addrs\",\"visibility\":\"+\",\"value_type\":\"dict[Role,Set]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"visibility\":\"+\",\"value_type\":\"dict[str,SerializeAsAny[Role]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Example\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"answer\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ExecuteTask\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FaissStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"File\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FileRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FireworksCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FireworksLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FixBug\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GeminiLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GenerateQuestions\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GenerateTable\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GitRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_valid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"google_api_client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphKeyword\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_USE_CASE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_DETAIL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PARTICIPANT\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_AGGREGATE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_COMPOSITE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"NULL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ON\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"HumanInteraction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stop_list\",\"visibility\":\"+\",\"value_type\":\"tuple\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"HumanProvider\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Optional[AudioData]\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ImageResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"images\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IndexableDocument\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame,list]\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"invoice_data\",\"visibility\":\"+\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCR\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"orc_data\",\"visibility\":\"+\",\"value_type\":\"Optional[list]\",\"default_value\":\"\"},{\"name\":\"origin_query\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoicePath\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"file_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"best_of\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"frequency_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[bool]\",\"default_value\":\"\"},{\"name\":\"max_token\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"n\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"presence_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"repetition_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"stop\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"stream\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"temperature\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_k\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"top_p\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"providers\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LanceStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"LanceDBConnection,RemoteDBConnection\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"visibility\":\"+\",\"value_type\":\"LanceTable,NoneType,RemoteTable\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LocalStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cache_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"fname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LongTermMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"memory_storage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MCTSSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MeilisearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"Client\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Memory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ignore_id\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_value\":\"\"},{\"name\":\"storage\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MemoryStorage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"is_initialized\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"visibility\":\"+\",\"value_type\":\"Optional[str],Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"NoneType,Optional[FAISS]\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MermaidConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Message\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cause_by\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel]\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"send_to\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"sent_from\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MessageQueue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MessageType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MethodSelect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Moderation\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"NoMoneyException\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"amount\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OCRResults\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ocr_result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OllamaLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI\",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"operation_location\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"response_ms\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retry_after\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"OutputParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Parameter\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PrepareDocuments\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PrepareInterview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProductManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProjectManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProjectRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"resources\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"src_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"srcs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"test_outputs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tests\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PromptString\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QaEngineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_round\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantConnection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"QdrantClient\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RebuildClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RebuildSequenceView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Redis\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RedisConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"password\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"username\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepairType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyQuestion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Repo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"assets\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"codes\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoFileInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"classes\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"functions\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"globals\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"page_info\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoMetadata\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"n_chars\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_docs\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"symbols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"base_directory\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Report\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"links\",\"visibility\":\"+\",\"value_type\":\"Optional[dict[str,list[str]]]\",\"default_value\":\"\"},{\"name\":\"summaries\",\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str,str]]]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Researcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ResourceFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_spec_and_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"competitive_analysis\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"data_api_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_output\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"seq_flow\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ResultEmbedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"List[Embedding]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Returns\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"format\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReviewMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReviseMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Role\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"actions\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]]\",\"default_value\":\"\"},{\"name\":\"addresses\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_human\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"states\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"important_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"visibility\":\"+\",\"value_type\":\"list[Type[Message]]\",\"default_value\":\"\"},{\"name\":\"react_mode\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleReactMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"additional_python_paths\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"code_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"command\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"mode\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"output\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"output_filename\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"working_directory\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stderr\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"stdout\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auth_config\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"visibility\":\"+\",\"value_type\":\"Session\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"access_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"bucket\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"endpoint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"secret_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SPO\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"subject\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SQVUseCase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"actors\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"outputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"steps\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SQVUseCaseDetails\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"use_cases\",\"visibility\":\"+\",\"value_type\":\"List[SQVUseCase]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Sales\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Searcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SeleniumWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"executable_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SerializationMixin\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SerperWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SimpleMessage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Singleton\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SkAgent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"import_skill\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"kernel\",\"visibility\":\"+\",\"value_type\":\"Kernel\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"Plan\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkSearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Skill\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arguments\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"examples\",\"visibility\":\"+\",\"value_type\":\"List[Example]\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,Parameter]]\",\"default_value\":\"\"},{\"name\":\"returns\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkillAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkillManager\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SkillsDeclaration\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"components\",\"visibility\":\"+\",\"value_type\":\"Optional[Components]\",\"default_value\":\"\"},{\"name\":\"entities\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Entity]\",\"default_value\":\"\"},{\"name\":\"skillapi\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SparkLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Strategy\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SubscriptionRunner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"dict[Role,asyncio.Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SummarizeCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SystemMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TalkAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aask_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"agent_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"history_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_gpt4\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TalkActionPrompt\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Task\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dependent_task_ids\",\"visibility\":\"+\",\"value_type\":\"List[int]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"tool\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Tasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"List[Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Teacher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"course_title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Team\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"Optional[Environment]\",\"default_value\":\"\"},{\"name\":\"idea\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"investment\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TestingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"valid_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"value\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"evaluator\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"method_select\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"parser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtTree\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_nodes\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TokenCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ToolUse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tool_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Translator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TreeofThought\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TutorialAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"main_title\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"total_content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"default_value\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"value_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassMeta\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"visibility\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"return_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassMethod]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UTGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chatgpt_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"questions_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Usage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UserMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"UserRequirement\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"VisualDiGraphRepo\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"VisualGraphRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browse_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebPage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"html\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inner_text\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"soup\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WikiHowTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WorkspaceConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"uid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_uid\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodeAN\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodePlanAndChange\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodeReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteContent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"directory\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDesign\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDirectory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDocstring\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WritePRD\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WritePRDReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTest\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WsParam\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"YamlModel\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"extra_fields\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,str]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"YamlModelWithoutDefault\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuEvent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"_AgentSkill\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"_VisualClassView\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"generalizations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"uml\",\"visibility\":\"+\",\"value_type\":\"Optional[UMLClassView]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "\nsequenceDiagram\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n```\n"}, {"id": "20240131222415604:{\nsequenceDiagram\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n```\n}"}, {"id": "?:User"}, {"id": "?:Typer"}, {"id": "{\"description\":\"This source code defines a Context class that represents the environment context for MetaGPT. It contains methods for creating a new os.environ object and for obtaining a LLM (Language Model) instance with a cost manager.\",\"use_cases\":[{\"description\":\"Create a new os.environ object\",\"inputs\":[],\"outputs\":[\"env\"],\"actors\":[\"ProjectRepo\",\"GitRepository\",\"Path\"],\"steps\":[\"Copy the current os.environ object\",\"Return the copied os.environ object\"],\"reason\":\"When the system needs to create a new os.environ object for the MetaGPT environment\"},{\"description\":\"Obtain a LLM (Language Model) instance with a cost manager\",\"inputs\":[],\"outputs\":[\"llm\"],\"actors\":[\"BaseLLM\",\"LLMConfig\"],\"steps\":[\"Create a new LLM instance based on the configuration\",\"Set the cost manager for the LLM instance\",\"Return the LLM instance\"],\"reason\":\"When the system needs to obtain a LLM instance with a cost manager for the MetaGPT environment\"}],\"relationship\":[\"The 'Obtain a LLM (Language Model) instance with a cost manager' use case depends on the 'Create a new os.environ object' use case as it requires the environment context to be set up before obtaining the LLM instance.\"]}"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222533217:{\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class 'ProjectRepo' which is a file repository for a project. It contains methods to interact with the project's files and resources.\",\"use_cases\":[{\"description\":\"Retrieve project requirements\",\"inputs\":[],\"outputs\":[\"requirement\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class retrieves the project requirements from the 'docs' attribute using the 'requirement' property.\"],\"reason\":\"When the system needs to access the project requirements.\"},{\"description\":\"Check if code files exist\",\"inputs\":[],\"outputs\":[\"code_files_exist\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class checks if the code files exist by accessing the 'srcs' attribute and its 'all_files' property.\"],\"reason\":\"When the system needs to verify the existence of code files.\"},{\"description\":\"Set source path for the project\",\"inputs\":[\"path\"],\"outputs\":[\"ProjectRepo\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class sets the source path for the project by using the 'with_src_path' method with the specified 'path'.\"],\"reason\":\"When the system needs to update the source path for the project.\"}],\"relationship\":[\"The 'Retrieve project requirements' use case is related to the 'Check if code files exist' use case as both involve accessing project files and resources.\",\"The 'Set source path for the project' use case is related to the 'Check if code files exist' use case as setting the source path may impact the existence of code files.\"]}"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222606110:{\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:str"}, {"id": "{\"description\":\"This source code defines a class `GitRepository` that represents a Git repository. It provides methods to interact with the repository, such as opening an existing repository, initializing a new repository, adding or removing files from the staging area, committing changes, deleting the repository, and more.\",\"use_cases\":[{\"description\":\"Open an existing Git repository or initialize a new one.\",\"inputs\":[\"local_path\",\"auto_init\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the provided path is a Git repository\",\"If it is a Git repository, open it and set the repository attribute\",\"If it is not a Git repository and auto_init is True, initialize a new Git repository at the provided path\"],\"reason\":\"When a user wants to open an existing Git repository or initialize a new one for further operations.\"},{\"description\":\"Add or remove files from the staging area based on the provided changes.\",\"inputs\":[\"files\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Iterate through the provided files and their change types\",\"Add or remove files from the staging area based on the change types\"],\"reason\":\"When a user wants to stage changes in the Git repository.\"},{\"description\":\"Commit the staged changes with the given comments.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Commit the staged changes with the provided comments\"],\"reason\":\"When a user wants to commit the staged changes in the Git repository.\"},{\"description\":\"Delete the entire repository directory.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Delete the entire repository directory if it is valid\"],\"reason\":\"When a user wants to delete the entire Git repository directory.\"},{\"description\":\"Return a dictionary of changed files and their change types.\",\"inputs\":[],\"outputs\":[\"changed_files\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the untracked files and their change types\",\"Retrieve the changed files and their change types from the index\",\"Combine the untracked and changed files into a dictionary\"],\"reason\":\"When a user wants to get the changed files in the Git repository.\"},{\"description\":\"Check if the specified directory is a Git repository.\",\"inputs\":[\"local_path\"],\"outputs\":[\"is_git_dir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the specified directory contains a .git directory\"],\"reason\":\"When a user wants to check if a directory is a Git repository.\"},{\"description\":\"Check if the Git repository is valid (exists and is initialized).\",\"inputs\":[],\"outputs\":[\"is_valid\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the repository attribute is not None\"],\"reason\":\"When a user wants to check if the Git repository is valid.\"},{\"description\":\"Return the Git repository's status as a string.\",\"inputs\":[],\"outputs\":[\"status\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the status of the Git repository using GitPython\"],\"reason\":\"When a user wants to get the status of the Git repository.\"},{\"description\":\"Return the path to the working directory of the Git repository.\",\"inputs\":[],\"outputs\":[\"workdir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the path to the working directory if the repository is valid\"],\"reason\":\"When a user wants to get the working directory of the Git repository.\"},{\"description\":\"Archive the current state of the Git repository.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Add all changed files to the staging area\",\"Commit the changes with the provided comments\"],\"reason\":\"When a user wants to archive the current state of the Git repository.\"},{\"description\":\"Create a new instance of FileRepository associated with this Git repository.\",\"inputs\":[\"relative_path\"],\"outputs\":[\"FileRepository\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Create a new instance of FileRepository with the provided relative path\"],\"reason\":\"When a user wants to create a new instance of FileRepository associated with the Git repository.\"},{\"description\":\"Get the dependency file associated with the Git repository.\",\"inputs\":[],\"outputs\":[\"DependencyFile\"],\"actors\":[\"FileRepository\"],\"steps\":[\"If the dependency file is not available, create a new instance of DependencyFile\"],\"reason\":\"When a user wants to get the dependency file associated with the Git repository.\"},{\"description\":\"Rename the root directory of the Git repository.\",\"inputs\":[\"new_dir_name\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Rename the root directory of the Git repository to the provided new name\"],\"reason\":\"When a user wants to rename the root directory of the Git repository.\"},{\"description\":\"Retrieve a list of files in the specified relative path.\",\"inputs\":[\"relative_path\",\"root_relative_path\",\"filter_ignored\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the list of files in the specified relative path\",\"Recursively retrieve files from subdirectories if present\",\"Filter the files based on .gitignore rules if required\"],\"reason\":\"When a user wants to retrieve a list of files in the specified relative path within the Git repository.\"},{\"description\":\"Filter a list of filenames based on .gitignore rules.\",\"inputs\":[\"filenames\",\"root_relative_path\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Filter the list of filenames based on .gitignore rules\"],\"reason\":\"When a user wants to filter a list of filenames based on .gitignore rules.\"}],\"relationship\":[\"Open an existing Git repository or initialize a new one can be performed by FileRepository\",\"Add or remove files from the staging area based on the provided changes can be performed by FileRepository\",\"Commit the staged changes with the given comments can be performed by FileRepository\",\"Delete the entire repository directory can be performed by FileRepository\",\"Return a dictionary of changed files and their change types can be performed by FileRepository\",\"Check if the specified directory is a Git repository can be performed by FileRepository\",\"Check if the Git repository is valid (exists and is initialized) can be performed by FileRepository\",\"Return the Git repository's status as a string can be performed by FileRepository\",\"Return the path to the working directory of the Git repository can be performed by FileRepository\",\"Archive the current state of the Git repository can be performed by FileRepository\",\"Create a new instance of FileRepository associated with this Git repository can be performed by FileRepository\",\"Get the dependency file associated with the Git repository can be performed by FileRepository\",\"Rename the root directory of the Git repository can be performed by FileRepository\",\"Retrieve a list of files in the specified relative path can be performed by FileRepository\",\"Filter a list of filenames based on .gitignore rules can be performed by FileRepository\"]}"}, {"id": "\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n"}, {"id": "\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222711914:{\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a class representing a FileRepository associated with a Git repository. The class includes methods for saving, getting, and deleting files, as well as managing file dependencies and generating new filenames.\",\"use_cases\":[{\"description\":\"Save content to a file and update its dependencies.\",\"inputs\":[\"filename\",\"content\",\"dependencies\"],\"outputs\":[\"Document\"],\"actors\":[\"Document\",\"Path\",\"List\"],\"steps\":[\"Create the pathname for the file within the repository.\",\"Write the content to the file.\",\"Update the dependencies if provided.\",\"Return the saved document.\"],\"reason\":\"When new content needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Get the dependencies of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the pathname of the file within the repository.\",\"Get the dependencies of the file.\",\"Return the set of dependencies.\"],\"reason\":\"When the dependencies of a file need to be retrieved.\"},{\"description\":\"Get the dependencies of a file that have changed.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Get the dependencies of the file.\",\"Identify the changed dependent files.\",\"Return the set of changed dependencies.\"],\"reason\":\"When the dependencies of a file that have changed need to be retrieved.\"},{\"description\":\"Read the content of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Document\",\"None\"],\"actors\":[\"Path\"],\"steps\":[\"Create a document instance for the file.\",\"Read the content of the file.\",\"Return the document with the content or None if the file does not exist.\"],\"reason\":\"When the content of a file needs to be read.\"},{\"description\":\"Get the content of all files in the repository.\",\"inputs\":[\"filter_ignored\"],\"outputs\":[\"List[Document]\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the content of all files in the repository.\",\"Return a list of document instances representing the files.\"],\"reason\":\"When the content of all files in the repository needs to be retrieved.\"},{\"description\":\"Get the files in a directory that have changed.\",\"inputs\":[\"dir\"],\"outputs\":[\"List\"],\"actors\":[\"Path\"],\"steps\":[\"Identify the changed files within the directory.\",\"Return the list of changed files.\"],\"reason\":\"When the changed files within a directory need to be retrieved.\"},{\"description\":\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"inputs\":[],\"outputs\":[\"str\"],\"actors\":[],\"steps\":[\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"Return the new filename.\"],\"reason\":\"When a new filename needs to be generated.\"},{\"description\":\"Save content to a file and update its dependencies using a Document instance.\",\"inputs\":[\"doc\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Save the content of the document to a file.\",\"Update the dependencies if provided.\"],\"reason\":\"When the content of a document needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Save a Document instance as a PDF file.\",\"inputs\":[\"doc\",\"with_suffix\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Convert the content of the document to Markdown.\",\"Save it to a file with an optional specified suffix.\",\"Log the saved file.\"],\"reason\":\"When a document instance needs to be saved as a PDF file.\"},{\"description\":\"Delete a file from the file repository.\",\"inputs\":[\"filename\"],\"outputs\":[],\"actors\":[\"Path\"],\"steps\":[\"Delete the file from the file repository.\"],\"reason\":\"When a file needs to be deleted from the file repository.\"}],\"relationship\":[\"Save content to a file and update its dependencies is related to Get the dependencies of a file.\",\"Save content to a file and update its dependencies is related to Get the dependencies of a file that have changed.\",\"Save content to a file and update its dependencies is related to Read the content of a file.\",\"Save content to a file and update its dependencies is related to Get the content of all files in the repository.\",\"Save content to a file and update its dependencies is related to Get the files in a directory that have changed.\",\"Save content to a file and update its dependencies is related to Generate a new filename based on the current timestamp and a UUID suffix.\",\"Save content to a file and update its dependencies is related to Save content to a file and update its dependencies using a Document instance.\",\"Save content to a file and update its dependencies is related to Save a Document instance as a PDF file.\",\"Save content to a file and update its dependencies is related to Delete a file from the file repository.\"]}"}, {"id": "\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n"}, {"id": "\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant DependencyFile\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222829147:{\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant DependencyFile\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:List"}, {"id": "?:aiofiles"}, {"id": "?:os"}, {"id": "?:datetime"}, {"id": "?:json"}, {"id": "{\"description\":\"The source code is a python class representing a DependencyFile for managing dependencies. It includes methods for loading, saving, updating, getting, and deleting dependencies from a file asynchronously.\",\"use_cases\":[{\"description\":\"Load dependencies from the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Check if the file exists\",\"Read the file asynchronously\",\"Parse the JSON data\",\"Update the internal dependencies\"],\"reason\":\"When the system needs to load dependencies from the file.\"},{\"description\":\"Save dependencies to the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Convert dependencies to JSON\",\"Open the file for writing asynchronously\",\"Write the JSON data to the file\"],\"reason\":\"When the system needs to save dependencies to the file.\"},{\"description\":\"Update dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"dependencies\",\"persist\"],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Update the internal dependencies with the new dependencies\",\"Persist the changes if persist is true\"],\"reason\":\"When the system needs to update dependencies for a file.\"},{\"description\":\"Get dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"persist\"],\"outputs\":[\"A set of dependencies\"],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Return the set of dependencies for the file\"],\"reason\":\"When the system needs to retrieve dependencies for a file.\"},{\"description\":\"Delete the dependency file.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Delete the dependency file if it exists\"],\"reason\":\"When the system needs to delete the dependency file.\"}],\"relationship\":[\"The 'Load dependencies from the file asynchronously' use case is related to 'Save dependencies to the file asynchronously' as it involves reading and writing to the file.\",\"The 'Update dependencies for a file asynchronously' use case is related to 'Get dependencies for a file asynchronously' as it involves updating and retrieving dependencies for a file.\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant DependencyFile\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n"}, {"id": "\nsequenceDiagram\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222928045:{\nsequenceDiagram\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code is an abstract class that provides a series of standard capabilities for an AI assistant. It includes methods for sending and receiving messages, as well as methods for asynchronous completion and choice selection.\",\"use_cases\":[{\"description\":\"Send a message to the AI assistant and receive a response.\",\"inputs\":[\"msg\",\"system_msgs\",\"format_msgs\",\"timeout\",\"stream\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Check if system messages are provided, if not, use the default system prompt\",\"Format the messages to be sent to the AI assistant, including user messages and system messages\",\"Send the formatted messages to the AI assistant and await a response\",\"Return the response from the AI assistant\"],\"reason\":\"When an external system needs to interact with the AI assistant by sending a message and receiving a response.\"},{\"description\":\"Send a batch of messages to the AI assistant and receive a concatenated response.\",\"inputs\":[\"msgs\",\"timeout\"],\"outputs\":[\"rsp_text\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Iterate through the list of messages to be sent to the AI assistant\",\"Send each message to the AI assistant and await a response\",\"Concatenate the responses from the AI assistant\",\"Return the concatenated response\"],\"reason\":\"When an external system needs to sequentially send multiple messages to the AI assistant and receive a combined response.\"},{\"description\":\"Send a code-related message to the AI assistant and receive a response.\",\"inputs\":[\"messages\",\"timeout\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Raise a NotImplementedError as this method is not implemented in the abstract class\"],\"reason\":\"N/A\"}],\"relationship\":[\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a batch of messages to the AI assistant and receive a concatenated response' use case, as it utilizes the method for sending a single message to the AI assistant.\",\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a code-related message to the AI assistant and receive a response' use case, as it utilizes the method for sending a single message to the AI assistant.\"]}"}, {"id": "\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n"}, {"id": "\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n\n"}, {"id": "20240131223021143:{\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n\n}"}, {"id": "{\"description\":\"This source code defines a Message class that represents a message with various attributes and methods for validation and serialization. It also includes methods for converting the message object to a dictionary and JSON string, as well as loading a message from a JSON string.\",\"use_cases\":[{\"description\":\"Create a new message with the given content, instruct content, role, cause by, sent from, and send to.\",\"inputs\":[\"content\",\"instruct_content\",\"role\",\"cause_by\",\"sent_from\",\"send_to\"],\"outputs\":[\"message_id\"],\"actors\":[\"User\"],\"steps\":[\"Validate and set the message ID if not provided\",\"Validate and set the instruct content if provided\",\"Validate and set the cause by if provided\",\"Validate and set the sent from if provided\",\"Validate and set the send to if provided\",\"Create a new message object with the provided data\",\"Return the message ID\"],\"reason\":\"When a user wants to create a new message with specific attributes.\"},{\"description\":\"Convert the message object to a dictionary containing role and content.\",\"inputs\":[],\"outputs\":[\"message_dict\"],\"actors\":[\"User\"],\"steps\":[\"Create a dictionary with role and content attributes of the message object\",\"Return the created dictionary\"],\"reason\":\"When a user needs to convert a message object to a dictionary.\"},{\"description\":\"Convert the message object to a JSON string.\",\"inputs\":[],\"outputs\":[\"json_string\"],\"actors\":[\"User\"],\"steps\":[\"Convert the message object to a JSON string\",\"Return the JSON string\"],\"reason\":\"When a user needs to convert a message object to a JSON string.\"},{\"description\":\"Load a message object from a JSON string.\",\"inputs\":[\"json_string\"],\"outputs\":[\"message_object\"],\"actors\":[\"User\"],\"steps\":[\"Parse the JSON string to a dictionary\",\"Create a message object from the dictionary\",\"Return the created message object\"],\"reason\":\"When a user needs to load a message object from a JSON string.\"}],\"relationship\":[\"Create a new message use case is related to Convert the message object to a dictionary use case and Convert the message object to a JSON string use case.\",\"Load a message object from a JSON string use case is independent of other use cases.\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant Message\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n"}, {"id": "\nsequenceDiagram\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223126916:{\nsequenceDiagram\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a class LLMConfig which represents the configuration for an LLM (Language Model) system. It includes various fields such as API key, base URL, model, app ID, and other parameters for controlling the behavior of the LLM system.\",\"use_cases\":[{\"description\":\"Configure LLM system\",\"inputs\":[\"api_key\",\"api_type\",\"base_url\",\"api_version\",\"model\",\"app_id\",\"api_secret\",\"domain\",\"max_token\",\"temperature\",\"top_p\",\"top_k\",\"repetition_penalty\",\"stop\",\"presence_penalty\",\"frequency_penalty\",\"best_of\",\"n\",\"stream\",\"logprobs\",\"top_logprobs\",\"timeout\",\"proxy\",\"calc_usage\"],\"outputs\":[],\"actors\":[\"System Administrator\"],\"steps\":[\"The system administrator provides the configuration parameters for the LLM system.\",\"The system validates the provided configuration parameters.\",\"The LLM system is configured with the provided parameters.\"],\"reason\":\"The external system needs to configure the LLM system with specific parameters to control its behavior and functionality.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n"}, {"id": "\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223231878:{\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:SystemAdministrator"}, {"id": "?:LLMSystem"}, {"id": "{\"description\":\"The source code defines a Team class that represents a team of agents working on a project. The team can hire roles, invest in the project, run and start a project, and run the company for a specified number of rounds.\",\"use_cases\":[{\"description\":\"Hire roles to cooperate\",\"inputs\":[\"roles\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team hires roles to cooperate on the project.\"],\"reason\":\"When the team needs to add new roles to the project.\"},{\"description\":\"Invest company\",\"inputs\":[\"investment\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team invests in the company.\",\"If the investment exceeds the maximum budget, a NoMoneyException is raised.\"],\"reason\":\"When the team needs to invest in the company.\"},{\"description\":\"Run a project from publishing user requirement\",\"inputs\":[\"idea\",\"send_to\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team runs a project based on the user's requirement.\",\"The idea is published to the team's environment for further processing.\"],\"reason\":\"When the team needs to start a new project based on user requirements.\"},{\"description\":\"Run company until target round or no money\",\"inputs\":[\"n_round\",\"idea\",\"send_to\",\"auto_archive\"],\"outputs\":[\"history\"],\"actors\":[\"Team\"],\"steps\":[\"The team runs the company for a specified number of rounds.\",\"If an idea is provided, it is used to run a project.\",\"The company is run until the target round is reached or there is no money left.\",\"The environment is archived if auto_archive is set to true.\"],\"reason\":\"When the team needs to run the company for a specified number of rounds.\"}],\"relationship\":[\"The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\",\"The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\"]}"}, {"id": "\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n\n Note right of Team: The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\n Note right of Team: The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\n"}, {"id": "\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223353735:{\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a Role class that represents a role or agent in a system. The Role class contains methods for setting actions, thinking, acting, observing, and reacting to messages. It also includes properties for managing the role's state and environment.\",\"use_cases\":[{\"description\":\"Set action to do and update context\",\"inputs\":[\"value\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the value is not None\",\"If the value is not None, set the value as the action to do and update the context\"],\"reason\":\"This use case is executed when the system needs to set an action for the role to perform and update the context.\"},{\"description\":\"Add actions to the role\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Reset the role's states and actions\",\"Iterate through the list of actions\",\"Initialize each action if it is not already initialized\",\"Set the long-term memory (llm) and prefix for each action\",\"Add the action to the role's list of actions\",\"Update the role's states with the action descriptions\"],\"reason\":\"This use case is executed when the system needs to add multiple actions to the role and update its states and long-term memory.\"},{\"description\":\"Set the strategy of the role reacting to observed messages\",\"inputs\":[\"react_mode\",\"max_react_loop\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the react_mode is valid\",\"Set the role's react mode and maximum react loop based on the inputs\"],\"reason\":\"This use case is executed when the system needs to set the strategy for the role's reaction to observed messages.\"},{\"description\":\"Watch actions of interest\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Set the role to watch messages caused by the specified actions\"],\"reason\":\"This use case is executed when the system needs the role to watch specific actions of interest.\"},{\"description\":\"Observe, think, and act based on the results of the observation\",\"inputs\":[\"with_message\"],\"outputs\":[\"rsp\"],\"actors\":[\"Role\"],\"steps\":[\"If a message is provided, place the message into the role's private message buffer\",\"If there is no new information, suspend and wait\",\"Observe new messages and filter out messages of interest\",\"React to the observed messages and get the response message\",\"Reset the next action to be taken\",\"Publish the response message to the environment\"],\"reason\":\"This use case is executed when the role needs to observe, think, and act based on the results of the observation.\"}],\"relationship\":[\"The 'Set action to do and update context' use case is related to the 'Add actions to the role' use case as it involves updating the role's context and actions.\",\"The 'Set the strategy of the role reacting to observed messages' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it determines the strategy for the role's reaction to observed messages.\",\"The 'Watch actions of interest' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it involves watching specific actions of interest during the observation process.\"]}"}, {"id": "\nsequenceDiagram\n participant Role\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n"}, {"id": "\nsequenceDiagram\n participant Role\n participant Team\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223527497:{\nsequenceDiagram\n participant Role\n participant Team\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines an Environment class that hosts a batch of roles. Roles can publish messages to the environment and can be observed by other roles. The environment also provides methods to add roles, publish messages, run role processes, and manage role addresses.\",\"use_cases\":[{\"description\":\"Add a role to the current environment\",\"inputs\":[\"role: Role\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add the role to the roles dictionary of the environment\",\"Set the environment for the role\",\"Set the context for the role\"],\"reason\":\"When a new role needs to be added to the environment\"},{\"description\":\"Add a batch of roles to the current environment\",\"inputs\":[\"roles: Iterable[Role]\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add each role to the roles dictionary of the environment\",\"Set the environment for each role\",\"Set the context for each role\"],\"reason\":\"When multiple roles need to be added to the environment\"},{\"description\":\"Publish a message to the recipients in the environment\",\"inputs\":[\"message: Message\",\"peekable: bool\"],\"outputs\":[\"bool\"],\"actors\":[\"Environment\"],\"steps\":[\"Iterate through the member addresses of the environment\",\"Check if the message is to be sent to the current recipient\",\"If found, put the message in the recipient's queue\",\"Update the history of the environment\"],\"reason\":\"When a message needs to be distributed to the recipients in the environment\"},{\"description\":\"Process all role runs at once\",\"inputs\":[\"k: int\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"For each role, initiate a run process\",\"Gather all the run processes using asyncio\",\"Check if all actions have been executed\"],\"reason\":\"When all role processes need to be executed at once\"},{\"description\":\"Get all roles in the environment\",\"inputs\":[],\"outputs\":[\"dict[str, Role]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the roles dictionary of the environment\"],\"reason\":\"When all roles in the environment need to be retrieved\"},{\"description\":\"Get a specific role in the environment\",\"inputs\":[\"name: str\"],\"outputs\":[\"Role\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the role with the specified name from the roles dictionary of the environment\"],\"reason\":\"When a specific role in the environment needs to be retrieved\"},{\"description\":\"Get all role names in the environment\",\"inputs\":[],\"outputs\":[\"list[str]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return a list of names of all roles in the environment\"],\"reason\":\"When all role names in the environment need to be retrieved\"},{\"description\":\"Get the addresses of the object\",\"inputs\":[\"obj\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Return the addresses of the specified object from the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be retrieved\"},{\"description\":\"Set the addresses of the object\",\"inputs\":[\"obj\",\"addresses\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Set the addresses of the specified object in the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be updated\"},{\"description\":\"Archive the environment\",\"inputs\":[\"auto_archive: bool\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"If auto_archive is true and the environment has a git repository, archive the repository\"],\"reason\":\"When the environment needs to be archived, and auto archiving is enabled\"}],\"relationship\":[\"The 'Add a role to the current environment' use case is related to the 'Add a batch of roles to the current environment' use case as it involves adding roles to the environment.\",\"The 'Publish a message to the recipients in the environment' use case is related to the 'Process all role runs at once' use case as it involves distributing messages to the roles in the environment and processing their runs.\",\"The 'Get all roles in the environment' use case is related to the 'Get a specific role in the environment' use case and the 'Get all role names in the environment' use case as it involves retrieving information about roles in the environment.\",\"The 'Get the addresses of the object' use case is related to the 'Set the addresses of the object' use case as it involves managing addresses of objects in the environment.\"]}"}, {"id": "\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n"}, {"id": "\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223701562:{\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code represents a Product Manager role responsible for product development and management. It includes attributes such as name, profile, goal, and constraints. The role has methods to decide what to do and observe the environment.\",\"use_cases\":[{\"description\":\"Decide what to do\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Check if the git repository exists and the configuration for git reinitialization is not set\",\"Set the state to 1 if the conditions are met\",\"If the conditions are not met, set the state to 0, set the git reinitialization configuration to false, and update the todo action to WritePRD\",\"Return a boolean indicating if there are any pending actions\"],\"reason\":\"When the system needs to decide the next action to take based on the current state and environment\"},{\"description\":\"Observe the environment\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Call the observe method of the superclass with ignore_memory set to True\"],\"reason\":\"When the system needs to observe the environment and update its internal state\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant ProductManager\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n"}, {"id": "\nsequenceDiagram\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223806039:{\nsequenceDiagram\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines an Architect role in a software development process with attributes such as name, profile, goal, and constraints. It also initializes specific actions and events for the Architect role.\",\"use_cases\":[],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant SourceCode\n participant Architect\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n"}, {"id": "\nsequenceDiagram\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223921365:{\nsequenceDiagram\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:SourceCode"}, {"id": "{\"description\":\"The source code defines a Project Manager role with attributes such as name, profile, goal, and constraints. It also sets actions and watches for the Project Manager role.\",\"use_cases\":[{\"description\":\"Write Tasks\",\"inputs\":[\"task_list\",\"task_dependencies\"],\"outputs\":[\"task_breakdown\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive task list and task dependencies\",\"Analyze task dependencies\",\"Generate task breakdown\"],\"reason\":\"When the Project Manager needs to break down tasks according to PRD/technical design and analyze task dependencies.\"},{\"description\":\"Write Design\",\"inputs\":[\"user_requirement\",\"technical_design\"],\"outputs\":[\"task_list\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive user requirement and technical design\",\"Generate a task list\"],\"reason\":\"When the Project Manager needs to generate a task list based on user requirement and technical design.\"}],\"relationship\":[\"Write Tasks is required by Project Manager to break down tasks according to PRD/technical design and analyze task dependencies.\",\"Write Design is required by Project Manager to generate a task list based on user requirement and technical design.\"]}"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n participant WriteTasks\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224018623:{\nsequenceDiagram\n participant ProjectManager\n participant WriteTasks\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class 'WriteTasks' that is responsible for creating and updating tasks based on changes in system designs and task files. It also handles merging and updating requirements related to the tasks.\",\"use_cases\":[{\"description\":\"Create and update tasks based on changes in system designs and task files\",\"inputs\":[\"changed_system_designs\",\"changed_tasks\"],\"outputs\":[\"change_files\"],\"actors\":[\"WriteTasks\"],\"steps\":[\"Identify the system designs and task files that have undergone changes\",\"Update the system designs and task files\",\"Merge the updated system designs and task files\",\"Update the requirements related to the tasks\"],\"reason\":\"When there are changes in the system designs or task files, the system needs to create and update tasks accordingly.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant WriteTasks\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n"}, {"id": "\nsequenceDiagram\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224133693:{\nsequenceDiagram\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class `WriteDesign` that represents an action to generate system design based on PRD and design documents. It includes methods to update system design, merge PRD and system design, save data API design, and save sequence flow.\",\"use_cases\":[{\"description\":\"Generate system design based on PRD and design documents\",\"inputs\":[\"with_messages\",\"schema\"],\"outputs\":[\"content\",\"instruct_content\"],\"actors\":[\"Message\"],\"steps\":[\"Identify which PRD documents and design documents have been modified\",\"Regenerate the design content for the modified documents\",\"Wait for all files to be processed before sending the publish message\"],\"reason\":\"When there are changes in PRD and design documents, the system needs to generate the corresponding system design.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant Action\n participant Message\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n\n"}, {"id": "\nsequenceDiagram\n participant Action\n participant Message\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224454452:{\nsequenceDiagram\n participant Action\n participant Message\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a class Action with various properties and methods related to running an action node and setting a prefix for later usage.\",\"use_cases\":[{\"description\":\"Set prefix for later usage\",\"inputs\":[\"prefix\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Set the prefix property of the Action class to the provided value\",\"Set the system prompt property to the provided prefix\",\"Update the llm system prompt property with the provided prefix\",\"If the node property is not None, update the llm property of the node with the llm property of the Action class\"],\"reason\":\"When an external system needs to set a prefix for later usage\"},{\"description\":\"Run action node\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Extract the messages from the args input\",\"Create a context string with the history messages\",\"Fill the action node with the context and llm properties\"],\"reason\":\"When an external system needs to run an action node\"},{\"description\":\"Run action\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"If the node property is not None, call the _run_action_node method with the provided args and kwargs\",\"Otherwise, raise a NotImplementedError\"],\"reason\":\"When an external system needs to run an action\"}],\"relationship\":[\"The 'Set prefix for later usage' use case can be executed before the 'Run action node' use case\",\"The 'Run action node' use case can be executed before the 'Run action' use case\"]}"}, {"id": "\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n```\n"}, {"id": "\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224643506:{\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class RunCodeContext which contains attributes related to running code such as mode, code, test code, command, working directory, additional python paths, output filename, and output.\",\"use_cases\":[{\"description\":\"Run code in script mode\",\"inputs\":[\"code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided code in script mode\",\"System generates an output after executing the code\"],\"reason\":\"When the user wants to execute a piece of code in script mode\"},{\"description\":\"Run code in test mode\",\"inputs\":[\"test_code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the test code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided test code\",\"System generates an output after executing the test code\"],\"reason\":\"When the user wants to execute a piece of code in test mode\"}],\"relationship\":[\"The 'Run code in script mode' use case is related to the 'Run code in test mode' use case as both involve running code with different purposes.\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224806732:{\nsequenceDiagram\n participant User\n participant System\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:System"}, {"id": "{\"description\":\"The source code defines a class CodeSummarizeContext with attributes design_filename, task_filename, codes_filenames, and reason. It also provides a static method loads to create an instance of CodeSummarizeContext from a list of filenames.\",\"use_cases\":[{\"description\":\"Load CodeSummarizeContext\",\"inputs\":[\"filenames: List[str]\"],\"outputs\":[\"ctx: CodeSummarizeContext\"],\"actors\":[\"External System\"],\"steps\":[\"Create an empty instance of CodeSummarizeContext\",\"Iterate through the list of filenames\",\"If the filename is relative to SYSTEM_DESIGN_FILE_REPO, set design_filename attribute\",\"If the filename is relative to TASK_FILE_REPO, set task_filename attribute\"],\"reason\":\"When the external system needs to load a CodeSummarizeContext instance from a list of filenames.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n"}, {"id": "\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant System\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224922674:{\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant System\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:ExternalSystem"}, {"id": "{\"description\":\"This source code defines a TestingContext class that contains a filename, code document, and an optional test document. The TestingContext is a subclass of BaseContext.\",\"use_cases\":[{\"description\":\"Create a new testing context\",\"inputs\":[\"filename\",\"code_doc\"],\"outputs\":[\"testing_context\"],\"actors\":[\"Tester\"],\"steps\":[\"The Tester provides a filename and a code document to the system\",\"The system creates a new TestingContext object with the provided filename and code document\",\"The system returns the created TestingContext object\"],\"reason\":\"When a Tester needs to create a new testing context for a specific code document\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant Tester\n participant System\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n"}, {"id": "\nsequenceDiagram\n participant Tester\n participant System\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131225037718:{\nsequenceDiagram\n participant Tester\n participant System\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:Tester"}, {"id": "{\"description\":\"The source code defines a class CodingContext with attributes filename, design_doc, task_doc, and code_doc. The class is a part of a larger system and interacts with external documents such as Document.\",\"use_cases\":[{\"description\":\"Create Coding Context\",\"inputs\":[\"filename\"],\"outputs\":[\"coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides a filename as input\",\"System creates a new CodingContext object with the provided filename\",\"System returns the created CodingContext object\"],\"reason\":\"When a user needs to create a new coding context for a specific file\"},{\"description\":\"Update Design Document\",\"inputs\":[\"coding_context\",\"design_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated design document as input\",\"System updates the design document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the design document in a coding context\"},{\"description\":\"Update Task Document\",\"inputs\":[\"coding_context\",\"task_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated task document as input\",\"System updates the task document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the task document in a coding context\"},{\"description\":\"Update Code Document\",\"inputs\":[\"coding_context\",\"code_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated code document as input\",\"System updates the code document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the code document in a coding context\"}],\"relationship\":[\"Create Coding Context is a prerequisite for Update Design Document, Update Task Document, and Update Code Document\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131225231661:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a custom exception class called NoMoneyException, which is raised when an operation cannot be completed due to insufficient funds. The exception includes the amount required and a message indicating the insufficient funds.\",\"use_cases\":[],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant User\n participant SourceCode\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131225403302:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:Logger"}, {"id": "{\"description\":\"This code defines a class for managing different types of file repositories related to project documentation.\",\"use_cases\":[{\"description\":\"Create DocFileRepositories instance\",\"inputs\":[\"git_repo\"],\"outputs\":[\"prd\",\"system_design\",\"task\",\"code_summary\",\"graph_repo\",\"class_view\",\"code_plan_and_change\"],\"actors\":[\"Project Manager\",\"Developer\"],\"steps\":[\"The Project Manager or Developer provides a git repository as input.\",\"The system creates a new DocFileRepositories instance with file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change.\",\"The system returns the file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change as output.\"],\"reason\":\"This use case is executed when a new instance of DocFileRepositories is required to manage different types of file repositories related to project documentation.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team"}, {"id": "20240131225530578:{\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team}"}, {"id": "?:Developer"}, {"id": "{\"description\":\"The source code defines a class ResourceFileRepositories that extends FileRepository and initializes multiple file repositories for different types of resources.\",\"use_cases\":[{\"description\":\"Create Resource File Repositories\",\"inputs\":[\"git_repo\"],\"outputs\":[\"competitive_analysis\",\"data_api_design\",\"seq_flow\",\"system_design\",\"prd\",\"api_spec_and_task\",\"code_summary\",\"sd_output\",\"code_plan_and_change\",\"graph_repo\"],\"actors\":[\"System\"],\"steps\":[\"Initialize a new instance of ResourceFileRepositories with a git repository\",\"Create file repositories for competitive analysis, data API design, sequence flow, system design, PRD, API spec and task, code summary, SD output, code plan and change, and graph repository\"],\"reason\":\"The system needs to manage and organize different types of resource files in a git repository\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n"}, {"id": "\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file"}, {"id": "20240131225710350:{\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file}"}, {"id": "?:generate_repo"}, {"id": "?:config"}, {"id": "{\"description\":\"The source code represents an Engineer role responsible for writing and possibly reviewing code. It includes attributes and methods for writing and reviewing code, summarizing code, and writing code plan and change. It also includes methods for determining the mode of action, thinking, and acting based on whether code review is used.\",\"use_cases\":[{\"description\":\"Write Code\",\"inputs\":[\"coding_context\"],\"outputs\":[\"changed_files\"],\"actors\":[\"Engineer\"],\"steps\":[\"Select essential information from the historical data to reduce the length of the prompt\",\"Run the code review if enabled\",\"Save the changed files and relevant messages\",\"Return the changed files\"],\"reason\":\"When the engineer needs to write code\"},{\"description\":\"Summarize Code\",\"inputs\":[\"summary\"],\"outputs\":[\"tasks\"],\"actors\":[\"Engineer\"],\"steps\":[\"Run the code summary for each pair of (system_design_doc, task_doc)\",\"Save the summary and check if it passes\",\"Send the summary to QA Engineer if needed\",\"Return the tasks if not passed\"],\"reason\":\"When the engineer needs to summarize code\"},{\"description\":\"Write Code Plan and Change\",\"inputs\":[\"files\",\"requirement\"],\"outputs\":[\"code_plan_and_change\"],\"actors\":[\"Engineer\"],\"steps\":[\"Write code plan and change that guides subsequent WriteCode and WriteCodeReview\",\"Save the code plan and change\",\"Return the code plan and change\"],\"reason\":\"When the engineer needs to write code plan and change\"}],\"relationship\":[\"Write Code is performed by Engineer\",\"Summarize Code is performed by Engineer\",\"Write Code Plan and Change is performed by Engineer\"]}"}, {"id": "\nsequenceDiagram\n participant Engineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n"}, {"id": "\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>"}, {"id": "20240131225840129:{\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>}"}], "links": [{"predicate": "is", "source": "metagpt/schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:AIMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BugFixContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodePlanAndChangeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Document"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Documents"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:MessageQueue"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeResult"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SimpleMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SystemMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassMethod"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassView"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UserMessage"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"package\":\"metagpt/schema.py:AIMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:AIMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:AIMessage", "target": "{\"lineno\":325,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:ApiType"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_console_log_level"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_debug"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_info"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_warn"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:logfmt"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_build_api_url"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_make_session"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"package\":\"metagpt/provider/general_api_base.py:APIRequestor\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}},\"methods\":{\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]},\"arequest_raw\":{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]},\"request\":{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]},\"request_headers\":{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]},\"request_raw\":{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}},\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"],\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\",\"aiohttp.ClientResponse\",\"requests.Response\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:AZURE_AD"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:OPEN_AI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:OpenAIResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:AsyncGenerator"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:aiohttp.ClientResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:requests.Response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"AZURE_AD,OPEN_AI\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request(method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action.py", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"package\":\"metagpt/actions/action.py:Action\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"node\":{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},\"prefix\":{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"set_name_if_empty\":{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]},\"set_prefix\":{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}},\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:model_config"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prefix"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:project_name"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:project_path"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prompt_schema"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:repo"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_prefix"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodePlanAndChangeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__repr__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_aask"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_run_action_node"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:Action", "target": "{\"lineno\":28,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"node\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodePlanAndChangeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodeSummarizeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodingContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:RunCodeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:TestingContext"}, {"predicate": "has_class_use_case", "source": "metagpt/actions/action.py:Action", "target": "{\"description\":\"This source code defines a class Action with various properties and methods related to running an action node and setting a prefix for later usage.\",\"use_cases\":[{\"description\":\"Set prefix for later usage\",\"inputs\":[\"prefix\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Set the prefix property of the Action class to the provided value\",\"Set the system prompt property to the provided prefix\",\"Update the llm system prompt property with the provided prefix\",\"If the node property is not None, update the llm property of the node with the llm property of the Action class\"],\"reason\":\"When an external system needs to set a prefix for later usage\"},{\"description\":\"Run action node\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Extract the messages from the args input\",\"Create a context string with the history messages\",\"Fill the action node with the context and llm properties\"],\"reason\":\"When an external system needs to run an action node\"},{\"description\":\"Run action\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"If the node property is not None, call the _run_action_node method with the provided args and kwargs\",\"Otherwise, raise a NotImplementedError\"],\"reason\":\"When an external system needs to run an action\"}],\"relationship\":[\"The 'Set prefix for later usage' use case can be executed before the 'Run action node' use case\",\"The 'Run action node' use case can be executed before the 'Run action' use case\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/actions/action.py:Action", "target": "\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n```\n"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:node", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:node", "target": "{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:prefix", "target": "{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:repo", "target": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ReviewMode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ReviseMode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:Task"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:Tasks"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ToolUse"}, {"predicate": "has_function", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:dict_to_markdown"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"package\":\"metagpt/actions/action_node.py:ActionNode\",\"attributes\":{\"children\":{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"example\":{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]},\"expected_type\":{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"key\":{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"schema\":{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}},\"methods\":{\"add_child\":{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_children\":{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"auto_review\":{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]},\"auto_revise\":{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"compile\":{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]},\"compile_example\":{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_instruction\":{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_to\":{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]},\"create_children_class\":{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]},\"create_class\":{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]},\"create_model_class\":{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]},\"fill\":{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]},\"from_children\":{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"from_pydantic\":{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]},\"get_child\":{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]},\"get_children_mapping\":{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_children_mapping_old\":{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_mapping\":{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_self_mapping\":{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"human_review\":{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]},\"human_revise\":{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]},\"keys\":{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]},\"review\":{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"revise\":{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]},\"set_recursive\":{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]},\"simple_fill\":{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]},\"simple_review\":{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"simple_revise\":{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"tagging\":{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]},\"update_instruct_content\":{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}},\"compositions\":[\"ActionNode\",\"Type\",\"BaseModel\"],\"aggregations\":[\"ReviseMode\",\"ReviewMode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:children"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:example"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:key"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:schema"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:auto_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:auto_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_children_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:fill"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_pydantic"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_child"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_children_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_self_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:human_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:human_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:keys"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:update_instruct_content"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:Type"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:BaseModel"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ReviseMode"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ReviewMode"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"lineno\":122,\"end_lineno\":666,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"children\",\"visibility\":\"+\",\"value_type\":\"dict[str,ActionNode]\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"example\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"visibility\":\"+\",\"value_type\":\"Type\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ActionNode"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:auto_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:auto_review", "target": "{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:auto_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:auto_revise", "target": "{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_children_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_children_class", "target": "{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_class", "target": "{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_pydantic", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:from_pydantic", "target": "{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_child", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_child", "target": "{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping", "target": "{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old", "target": "{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_self_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_self_mapping", "target": "{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:human_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:human_review", "target": "{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:human_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:human_revise", "target": "{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:keys", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:keys", "target": "{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:review", "target": "{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:revise", "target": "{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_review", "target": "{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_revise", "target": "{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:update_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:update_instruct_content", "target": "{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_output.py", "target": "metagpt/actions/action_output.py:ActionOutput"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"package\":\"metagpt/actions/action_output.py:ActionOutput\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}},\"methods\":{},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "?:BaseModel"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/actions", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions", "target": ""}, {"predicate": "has_class", "source": "metagpt/actions", "target": "metagpt/actions:ActionType"}, {"predicate": "is", "source": "metagpt/actions:ActionType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"package\":\"metagpt/actions:ActionType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions:ActionType", "target": "metagpt/actions:ActionType:name"}, {"predicate": "has_class_view", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions:ActionType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions:ActionType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"package\":\"metagpt/provider/general_api_base.py:ApiType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"from_str\":{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:name"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/architect.py", "target": "metagpt/roles/architect.py:Architect"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"package\":\"metagpt/roles/architect.py:Architect\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:Architect", "target": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/architect.py:Architect", "target": "{\"description\":\"The source code defines an Architect role in a software development process with attributes such as name, profile, goal, and constraints. It also initializes specific actions and events for the Architect role.\",\"use_cases\":[],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/architect.py:Architect", "target": "\nsequenceDiagram\n participant SourceCode\n participant Architect\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"package\":\"metagpt/actions/skill_action.py:ArgumentsParingAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"parse_arguments\":{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict]\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:MessageType"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"package\":\"metagpt/roles/assistant.py:Assistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]},\"get_memory\":{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]},\"load_memory\":{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]},\"refine_memory\":{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]},\"skill_handler\":{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]},\"talk\":{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]},\"talk_handler\":{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}},\"compositions\":[\"SkillsDeclaration\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skills"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:act"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:think"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:_plan"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"lineno\":37,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "?:SkillsDeclaration"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"package\":\"metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient\",\"attributes\":{},\"methods\":{\"stream\":{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"lineno\":10,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream", "target": "{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/context.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/context.py", "target": "metagpt/context.py:AttrDict"}, {"predicate": "has_class", "source": "metagpt/context.py", "target": "metagpt/context.py:Context"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict", "target": "{\"name\":\"AttrDict\",\"package\":\"metagpt/context.py:AttrDict\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]},\"remove\":{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:model_config"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:get"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:remove"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:set"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:Context:kwargs"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__init__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__getattr__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__setattr__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__delattr__"}, {"predicate": "has_page_info", "source": "metagpt/context.py:AttrDict", "target": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AttrDict\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context.py:AttrDict", "target": "{\"name\":\"AttrDict\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:remove", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:remove", "target": "{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"predicate": "has_function", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"package\":\"metagpt/tools/iflytek_tts.py:AudioData\",\"attributes\":{\"audio\":{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]},\"ced\":{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"lineno\":35,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"audio\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ced\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/azure_openai_api.py", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"package\":\"metagpt/provider/azure_openai_api.py:AzureOpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AsyncAzureOpenAI\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "?:AsyncAzureOpenAI"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"predicate": "has_class_method", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"lineno\":20,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:AzureTTS"}, {"predicate": "has_function", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"package\":\"metagpt/tools/azure_tts.py:AzureTTS\",\"attributes\":{\"region\":{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]},\"subscription_key\":{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}},\"methods\":{\"role_style_text\":{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]},\"role_text\":{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]},\"style_text\":{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]},\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"lineno\":19,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"region\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:BEAGECTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:MCTSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"package\":\"metagpt/strategy/tot.py:BFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"generate_and_evaluate_nodes\":{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"package\":\"metagpt/schema.py:BaseContext\",\"attributes\":{},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}},\"compositions\":[],\"aggregations\":[\"T\"]}"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:BaseContext", "target": "metagpt/schema.py:BaseContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:BaseContext", "target": "?:T"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BaseContext", "target": "{\"lineno\":410,\"end_lineno\":415,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BaseContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseEvaluator"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseParser"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtNode"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"package\":\"metagpt/strategy/base.py:BaseEvaluator\",\"attributes\":{},\"methods\":{\"status_verify\":{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/base_llm.py", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"package\":\"metagpt/provider/base_llm.py:BaseLLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]},\"aask_batch\":{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]},\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"get_choice_delta_text\":{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]},\"get_choice_function\":{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:AsyncOpenAI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"predicate": "is_composite_of", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"lineno\":21,\"end_lineno\":151,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[AsyncOpenAI]]\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:CostManager"}, {"predicate": "has_class_use_case", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"description\":\"The source code is an abstract class that provides a series of standard capabilities for an AI assistant. It includes methods for sending and receiving messages, as well as methods for asynchronous completion and choice selection.\",\"use_cases\":[{\"description\":\"Send a message to the AI assistant and receive a response.\",\"inputs\":[\"msg\",\"system_msgs\",\"format_msgs\",\"timeout\",\"stream\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Check if system messages are provided, if not, use the default system prompt\",\"Format the messages to be sent to the AI assistant, including user messages and system messages\",\"Send the formatted messages to the AI assistant and await a response\",\"Return the response from the AI assistant\"],\"reason\":\"When an external system needs to interact with the AI assistant by sending a message and receiving a response.\"},{\"description\":\"Send a batch of messages to the AI assistant and receive a concatenated response.\",\"inputs\":[\"msgs\",\"timeout\"],\"outputs\":[\"rsp_text\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Iterate through the list of messages to be sent to the AI assistant\",\"Send each message to the AI assistant and await a response\",\"Concatenate the responses from the AI assistant\",\"Return the concatenated response\"],\"reason\":\"When an external system needs to sequentially send multiple messages to the AI assistant and receive a combined response.\"},{\"description\":\"Send a code-related message to the AI assistant and receive a response.\",\"inputs\":[\"messages\",\"timeout\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Raise a NotImplementedError as this method is not implemented in the abstract class\"],\"reason\":\"N/A\"}],\"relationship\":[\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a batch of messages to the AI assistant and receive a concatenated response' use case, as it utilizes the method for sending a single message to the AI assistant.\",\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a code-related message to the AI assistant and receive a response' use case, as it utilizes the method for sending a single message to the AI assistant.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:model", "target": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text", "target": "{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"package\":\"metagpt/strategy/base.py:BaseParser\",\"attributes\":{},\"methods\":{\"propose\":{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose(current_state: str): str\",\"aggregations\":[]},\"sample\":{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample(current_state: str): str\",\"aggregations\":[]},\"value\":{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value(input: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:propose"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:sample"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:value"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:__call__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose(current_state: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample(current_state: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value(input: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"package\":\"metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin\",\"attributes\":{\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_extract_content_from_output\":{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]},\"run_repair_llm_output\":{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_repair_llm_raw_output\":{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]},\"run_retry_parse_json_text\":{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"package\":\"metagpt/document_store/base_store.py:BaseStore\",\"attributes\":{},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search()\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"lineno\":12,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory\",\"attributes\":{\"cacheable\":{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]},\"historical_summary\":{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]},\"history_text\":{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]},\"is_dirty\":{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]},\"is_history_available\":{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]},\"last_history_id\":{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]},\"last_talk\":{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"add_answer\":{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_history\":{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_talk\":{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]},\"dumps\":{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]},\"exists\":{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]},\"extract_info\":{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]},\"get_knowledge\":{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]},\"get_title\":{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]},\"is_related\":{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]},\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]},\"pop_last_talk\":{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]},\"rewrite\":{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]},\"set_history_summary\":{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]},\"split_texts\":{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]},\"summarize\":{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]},\"to_int\":{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]},\"to_metagpt_history_format\":{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]},\"to_redis_key\":{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"BaseLLM\"],\"aggregations\":[\"BrainMemory\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:BrainMemory"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/schema.py:Message"}, {"predicate": "is_composite_of", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"lineno\":26,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cacheable\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"history_text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_history_available\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"last_talk\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/browser_config.py", "target": "metagpt/configs/browser_config.py:BrowserConfig"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"name\":\"BrowserConfig\",\"package\":\"metagpt/configs/browser_config.py:BrowserConfig\",\"attributes\":{\"browser\":{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"driver\":{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:browser"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:driver"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/config2.py:Config:browser"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrowserConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"name\":\"BrowserConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"driver\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:browser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:browser", "target": "{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:driver", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:driver", "target": "{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:path", "target": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"package\":\"metagpt/schema.py:BugFixContext\",\"attributes\":{\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BugFixContext:filename"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BugFixContext", "target": "{\"lineno\":472,\"end_lineno\":473,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BugFixContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/config2.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/config2.py", "target": "metagpt/config2.py:CLIParams"}, {"predicate": "has_class", "source": "metagpt/config2.py", "target": "metagpt/config2.py:Config"}, {"predicate": "has_function", "source": "metagpt/config2.py", "target": "metagpt/config2.py:merge_dict"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams", "target": "{\"name\":\"CLIParams\",\"package\":\"metagpt/config2.py:CLIParams\",\"attributes\":{\"git_reinit\":{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}},\"methods\":{\"check_project_path\":{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:git_reinit"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:inc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:reqa_file"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:check_project_path"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:CLIParams", "target": "{\"lineno\":25,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CLIParams\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config2.py:CLIParams", "target": "{\"name\":\"CLIParams\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"git_reinit\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:git_reinit", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:git_reinit", "target": "{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:inc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:inc", "target": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:max_auto_summarize_code", "target": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:reqa_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:reqa_file", "target": "{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:check_project_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:check_project_path", "target": "{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:ChangeType"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"package\":\"metagpt/utils/git_repository.py:ChangeType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "metagpt/utils/git_repository.py:ChangeType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/chromadb_store.py", "target": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"package\":\"metagpt/document_store/chromadb_store.py:ChromaStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"collection\":{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "isCompositeOn", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"collection\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/anthropic_api.py", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"package\":\"metagpt/provider/anthropic_api.py:Claude2\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:CodeBlockInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassMethod"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassRelationship"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotReturn"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoFileInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoParser"}, {"predicate": "has_function", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:is_func"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"package\":\"metagpt/repo_parser.py:CodeBlockInfo\",\"attributes\":{\"end_lineno\":{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]},\"lineno\":{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]},\"properties\":{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]},\"tokens\":{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"end_lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"properties\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"tokens\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:CodeParser"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:NoMoneyException"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:OutputParser"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:check_cmd_exists"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:require_python_version"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:print_members"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_recipient"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:get_class_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str_set"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:is_send_to"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:concat_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:split_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:general_after_log"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:write_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class_inst"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:format_trackback_info"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:serialize_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:role_raise_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:aread"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:awrite"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_file_block"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:list_files"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_json_code_block"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"package\":\"metagpt/utils/common.py:CodeParser\",\"attributes\":{},\"methods\":{\"parse_block\":{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_block"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_str"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"lineno\":234,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"name\":\"CodePlanAndChangeContext\",\"package\":\"metagpt/schema.py:CodePlanAndChangeContext\",\"attributes\":{\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"prd_filename\":{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:requirement"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:task_filename"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "?:CodePlanAndChangeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"lineno\":476,\"end_lineno\":497,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodePlanAndChangeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"name\":\"CodePlanAndChangeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:design_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:design_filename", "target": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename", "target": "{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:requirement", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:requirement", "target": "{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:task_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:task_filename", "target": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"package\":\"metagpt/schema.py:CodeSummarizeContext\",\"attributes\":{\"codes_filenames\":{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]},\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "?:CodeSummarizeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"lineno\":450,\"end_lineno\":469,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"codes_filenames\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"description\":\"The source code defines a class CodeSummarizeContext with attributes design_filename, task_filename, codes_filenames, and reason. It also provides a static method loads to create an instance of CodeSummarizeContext from a list of filenames.\",\"use_cases\":[{\"description\":\"Load CodeSummarizeContext\",\"inputs\":[\"filenames: List[str]\"],\"outputs\":[\"ctx: CodeSummarizeContext\"],\"actors\":[\"External System\"],\"steps\":[\"Create an empty instance of CodeSummarizeContext\",\"Iterate through the list of filenames\",\"If the filename is relative to SYSTEM_DESIGN_FILE_REPO, set design_filename attribute\",\"If the filename is relative to TASK_FILE_REPO, set task_filename attribute\"],\"reason\":\"When the external system needs to load a CodeSummarizeContext instance from a list of filenames.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"package\":\"metagpt/schema.py:CodingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"design_doc\":{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"task_doc\":{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:design_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:task_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "?:Document"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodingContext", "target": "{\"lineno\":418,\"end_lineno\":422,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"design_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:CodingContext", "target": "{\"description\":\"The source code defines a class CodingContext with attributes filename, design_doc, task_doc, and code_doc. The class is a part of a larger system and interacts with external documents such as Document.\",\"use_cases\":[{\"description\":\"Create Coding Context\",\"inputs\":[\"filename\"],\"outputs\":[\"coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides a filename as input\",\"System creates a new CodingContext object with the provided filename\",\"System returns the created CodingContext object\"],\"reason\":\"When a user needs to create a new coding context for a specific file\"},{\"description\":\"Update Design Document\",\"inputs\":[\"coding_context\",\"design_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated design document as input\",\"System updates the design document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the design document in a coding context\"},{\"description\":\"Update Task Document\",\"inputs\":[\"coding_context\",\"task_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated task document as input\",\"System updates the task document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the task document in a coding context\"},{\"description\":\"Update Code Document\",\"inputs\":[\"coding_context\",\"code_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated code document as input\",\"System updates the code document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the code document in a coding context\"}],\"relationship\":[\"Create Coding Context is a prerequisite for Update Design Document, Update Task Document, and Update Code Document\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:CodingContext", "target": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:ConductResearch"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "has_function", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:get_research_system_text"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"package\":\"metagpt/actions/research.py:CollectLinks\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"rank_func\":{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}},\"compositions\":[\"Callable\"],\"aggregations\":[\"str\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:run"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:Callable"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:str\\"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"lineno\":78,\"end_lineno\":171,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rank_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]],None]]\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Returns"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Components", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"package\":\"metagpt/learn/skill_loader.py:Components\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"package\":\"metagpt/actions/research.py:ConductResearch\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"lineno\":240,\"end_lineno\":265,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/config2.py:Config\",\"attributes\":{\"AZURE_TTS_REGION\":{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]},\"AZURE_TTS_SUBSCRIPTION_KEY\":{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_KEY\":{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_SECRET\":{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]},\"IFLYTEK_APP_ID\":{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]},\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\":{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]},\"browser\":{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]},\"code_review_k_times\":{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]},\"enable_longterm_memory\":{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"llm_for_researcher_report\":{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]},\"llm_for_researcher_summary\":{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]},\"mermaid\":{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]},\"mermaid_engine\":{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]},\"mmdc\":{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]},\"pyppeteer_executable_path\":{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]},\"redis\":{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]},\"redis_key\":{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]},\"repair_llm_output\":{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},\"s3\":{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]},\"search\":{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]},\"workspace\":{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}},\"methods\":{\"default\":{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]},\"from_home\":{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]},\"get_azure_llm\":{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"get_openai_llm\":{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"update_via_cli\":{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\",\"S3Config\",\"SearchConfig\"],\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:AZURE_TTS_REGION"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:IFLYTEK_API_KEY"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:IFLYTEK_API_SECRET"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:IFLYTEK_APP_ID"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:browser"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:code_review_k_times"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:enable_longterm_memory"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:inc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:language"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm_for_researcher_report"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm_for_researcher_summary"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mermaid"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mermaid_engine"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mmdc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:proxy"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:puppeteer_config"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:pyppeteer_executable_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:redis"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:redis_key"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:repair_llm_output"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:reqa_file"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:s3"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:search"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:workspace"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:default"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:from_home"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:get_azure_llm"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:get_openai_llm"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:update_via_cli"}, {"predicate": "isAggregateOf", "source": "metagpt/config2.py:Config", "target": "?:LLMConfig"}, {"predicate": "isGeneralizeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:CLIParams"}, {"predicate": "isGeneralizeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/config2.py:Config", "target": "metagpt/context.py:Context:config"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/s3_config.py:S3Config"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:Config", "target": "{\"lineno\":44,\"end_lineno\":132,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config2.py:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"AZURE_TTS_REGION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_SECRET\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_APP_ID\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"enable_longterm_memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_report\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid_engine\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"mmdc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"Literal['json','markdown','raw']\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pyppeteer_executable_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"redis\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"s3\",\"visibility\":\"+\",\"value_type\":\"Optional[S3Config]\",\"default_value\":\"\"},{\"name\":\"search\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchConfig]\",\"default_value\":\"\"},{\"name\":\"workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:RedisConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:S3Config"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:SearchConfig"}, {"predicate": "is", "source": "metagpt/config2.py:Config:AZURE_TTS_REGION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:AZURE_TTS_REGION", "target": "{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY", "target": "{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:IFLYTEK_API_KEY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:IFLYTEK_API_KEY", "target": "{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:IFLYTEK_API_SECRET", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:IFLYTEK_API_SECRET", "target": "{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:IFLYTEK_APP_ID", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:IFLYTEK_APP_ID", "target": "{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL", "target": "{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:browser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:browser", "target": "{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:code_review_k_times", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:code_review_k_times", "target": "{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:enable_longterm_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:enable_longterm_memory", "target": "{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:inc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:inc", "target": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm_for_researcher_report", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm_for_researcher_report", "target": "{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm_for_researcher_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm_for_researcher_summary", "target": "{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:max_auto_summarize_code", "target": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mermaid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mermaid", "target": "{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mermaid_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mermaid_engine", "target": "{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mmdc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mmdc", "target": "{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:puppeteer_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:puppeteer_config", "target": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:pyppeteer_executable_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:pyppeteer_executable_path", "target": "{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:redis", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:redis", "target": "{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:redis_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:redis_key", "target": "{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:repair_llm_output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:repair_llm_output", "target": "{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:reqa_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:reqa_file", "target": "{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:s3", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:s3", "target": "{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:search", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:search", "target": "{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:workspace", "target": "{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:default", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:default", "target": "{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:from_home", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:from_home", "target": "{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:get_azure_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:get_azure_llm", "target": "{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:get_openai_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:get_openai_llm", "target": "{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:update_via_cli", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:update_via_cli", "target": "{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config\",\"attributes\":{\"alias\":{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"alias\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/strategy/tot.py:TreeofThought:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context", "target": "{\"name\":\"Context\",\"package\":\"metagpt/context.py:Context\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"llm\":{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]},\"llm_with_cost_manager_from_llm_config\":{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]},\"new_environ\":{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}},\"compositions\":[\"GitRepository\",\"ProjectRepo\",\"Path\"],\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:config"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:git_repo"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:kwargs"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:model_config"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:repo"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:src_workspace"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:llm"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:new_environ"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/context.py:Context", "target": "?:BaseLLM"}, {"predicate": "isAggregateOf", "source": "metagpt/context.py:Context", "target": "?:LLMConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "metagpt/environment.py:Environment"}, {"predicate": "isCompositeOn", "source": "metagpt/context.py:Context", "target": "metagpt/environment.py:Environment:context"}, {"predicate": "is_composite_of", "source": "metagpt/context.py:Context", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is_composite_of", "source": "metagpt/context.py:Context", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_page_info", "source": "metagpt/context.py:Context", "target": "{\"lineno\":55,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Context\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context.py:Context", "target": "{\"name\":\"Context\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"Optional[GitRepository]\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"Optional[ProjectRepo]\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:GitRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:ProjectRepo"}, {"predicate": "has_class_use_case", "source": "metagpt/context.py:Context", "target": "{\"description\":\"This source code defines a Context class that represents the environment context for MetaGPT. It contains methods for creating a new os.environ object and for obtaining a LLM (Language Model) instance with a cost manager.\",\"use_cases\":[{\"description\":\"Create a new os.environ object\",\"inputs\":[],\"outputs\":[\"env\"],\"actors\":[\"ProjectRepo\",\"GitRepository\",\"Path\"],\"steps\":[\"Copy the current os.environ object\",\"Return the copied os.environ object\"],\"reason\":\"When the system needs to create a new os.environ object for the MetaGPT environment\"},{\"description\":\"Obtain a LLM (Language Model) instance with a cost manager\",\"inputs\":[],\"outputs\":[\"llm\"],\"actors\":[\"BaseLLM\",\"LLMConfig\"],\"steps\":[\"Create a new LLM instance based on the configuration\",\"Set the cost manager for the LLM instance\",\"Return the LLM instance\"],\"reason\":\"When the system needs to obtain a LLM instance with a cost manager for the MetaGPT environment\"}],\"relationship\":[\"The 'Obtain a LLM (Language Model) instance with a cost manager' use case depends on the 'Create a new os.environ object' use case as it requires the environment context to be set up before obtaining the LLM instance.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/context.py:Context", "target": "\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n"}, {"predicate": "is", "source": "metagpt/context.py:Context:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:kwargs", "target": "{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:repo", "target": "{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:llm", "target": "{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config", "target": "{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:new_environ", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:new_environ", "target": "{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/context_mixin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/context_mixin.py", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"name\":\"ContextMixin\",\"package\":\"metagpt/context_mixin.py:ContextMixin\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"private_config\":{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]},\"private_context\":{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]},\"private_llm\":{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]},\"set_config\":{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}},\"compositions\":[\"Config\",\"Context\",\"BaseLLM\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:config"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:context"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:llm"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:model_config"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_config"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_context"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_config"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_context"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_llm"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/config2.py:Config"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context.py:Context"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:__init__"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"lineno\":17,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ContextMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"name\":\"ContextMixin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"private_config\",\"visibility\":\"+\",\"value_type\":\"Optional[Config]\",\"default_value\":\"\"},{\"name\":\"private_context\",\"visibility\":\"+\",\"value_type\":\"Optional[Context]\",\"default_value\":\"\"},{\"name\":\"private_llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:Config"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:Context"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_config", "target": "{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_context", "target": "{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_llm", "target": "{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_config", "target": "{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_context", "target": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_llm", "target": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:Costs"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:TokenCostManager"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"package\":\"metagpt/utils/cost_manager.py:CostManager\",\"attributes\":{\"max_budget\":{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]},\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]},\"get_total_completion_tokens\":{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]},\"get_total_cost\":{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]},\"get_total_prompt_tokens\":{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "?:Costs"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/context.py:Context:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"lineno\":24,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"max_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"package\":\"metagpt/utils/cost_manager.py:Costs\",\"attributes\":{\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:JSONObject"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"package\":\"metagpt/utils/custom_decoder.py:CustomDecoder\",\"attributes\":{\"parse_object\":{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]},\"parse_string\":{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]},\"scan_once\":{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}},\"methods\":{\"decode\":{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"predicate": "has_class_method", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"predicate": "has_class_method", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"parse_object\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/customer_service.py", "target": "metagpt/roles/customer_service.py:CustomerService"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"package\":\"metagpt/roles/customer_service.py:CustomerService\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is_composite_of", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "?:BaseStore"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_ddg.py", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"package\":\"metagpt/tools/search_engine_ddg.py:DDGAPIWrapper\",\"attributes\":{\"ddgs\":{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}},\"compositions\":[\"DDGS\"],\"aggregations\":[\"\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:DDGS"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:\\"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"lineno\":21,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ddgs\",\"visibility\":\"+\",\"value_type\":\"DDGS\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"package\":\"metagpt/strategy/tot.py:DFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:DataSource\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/debug_error.py", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"package\":\"metagpt/actions/debug_error.py:DebugError\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"lineno\":48,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/dependency_file.py", "target": "metagpt/utils/dependency_file.py:DependencyFile"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"package\":\"metagpt/utils/dependency_file.py:DependencyFile\",\"attributes\":{\"exists\":{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}},\"methods\":{\"delete_file\":{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]},\"load\":{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"update\":{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "?:Path\\"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"lineno\":22,\"end_lineno\":108,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"exists\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"description\":\"The source code is a python class representing a DependencyFile for managing dependencies. It includes methods for loading, saving, updating, getting, and deleting dependencies from a file asynchronously.\",\"use_cases\":[{\"description\":\"Load dependencies from the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Check if the file exists\",\"Read the file asynchronously\",\"Parse the JSON data\",\"Update the internal dependencies\"],\"reason\":\"When the system needs to load dependencies from the file.\"},{\"description\":\"Save dependencies to the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Convert dependencies to JSON\",\"Open the file for writing asynchronously\",\"Write the JSON data to the file\"],\"reason\":\"When the system needs to save dependencies to the file.\"},{\"description\":\"Update dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"dependencies\",\"persist\"],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Update the internal dependencies with the new dependencies\",\"Persist the changes if persist is true\"],\"reason\":\"When the system needs to update dependencies for a file.\"},{\"description\":\"Get dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"persist\"],\"outputs\":[\"A set of dependencies\"],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Return the set of dependencies for the file\"],\"reason\":\"When the system needs to retrieve dependencies for a file.\"},{\"description\":\"Delete the dependency file.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Delete the dependency file if it exists\"],\"reason\":\"When the system needs to delete the dependency file.\"}],\"relationship\":[\"The 'Load dependencies from the file asynchronously' use case is related to 'Save dependencies to the file asynchronously' as it involves reading and writing to the file.\",\"The 'Update dependencies for a file asynchronously' use case is related to 'Get dependencies for a file asynchronously' as it involves updating and retrieving dependencies for a file.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "\nsequenceDiagram\n participant User\n participant DependencyFile\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api_review.py", "target": "metagpt/actions/design_api_review.py:DesignReview"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"package\":\"metagpt/actions/design_api_review.py:DesignReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/di_graph_repository.py", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"package\":\"metagpt/utils/di_graph_repository.py:DiGraphRepository\",\"attributes\":{\"pathname\":{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]},\"root\":{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"json\":{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"GraphRepository\",\"SPO\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:GraphRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:SPO"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"lineno\":21,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"pathname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"name\":\"DocFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:DocFileRepositories\",\"attributes\":{\"class_view\":{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]},\"task\":{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:class_view"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:prd"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:system_design"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:task"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"lineno\":42,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocFileRepositories\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"name\":\"DocFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"class_view\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"description\":\"This code defines a class for managing different types of file repositories related to project documentation.\",\"use_cases\":[{\"description\":\"Create DocFileRepositories instance\",\"inputs\":[\"git_repo\"],\"outputs\":[\"prd\",\"system_design\",\"task\",\"code_summary\",\"graph_repo\",\"class_view\",\"code_plan_and_change\"],\"actors\":[\"Project Manager\",\"Developer\"],\"steps\":[\"The Project Manager or Developer provides a git repository as input.\",\"The system creates a new DocFileRepositories instance with file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change.\",\"The system returns the file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change as output.\"],\"reason\":\"This use case is executed when a new instance of DocFileRepositories is required to manage different types of file repositories related to project documentation.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:class_view", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:class_view", "target": "{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change", "target": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary", "target": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo", "target": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:prd", "target": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:system_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:system_design", "target": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:task", "target": "{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringCollector"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringTransformer"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:get_docstring_statement"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:has_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:merge_docstring"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"package\":\"metagpt/utils/pycst.py:DocstringCollector\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.FunctionDef\",\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.SimpleStatementLine"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.ClassDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.FunctionDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.Module"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:bool\\"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"package\":\"metagpt/utils/pycst.py:DocstringTransformer\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\",\"cst.FunctionDef\",\"Module\",\"bool\\\\\",\"cst.Module\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.SimpleStatementLine"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.ClassDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.CSTNode"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.FunctionDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:Module"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:bool\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Document"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:DocumentStatus"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:IndexableDocument"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Repo"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:RepoMetadata"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:validate_cols"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:read_data"}, {"predicate": "is", "source": "metagpt/document.py:Document", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"package\":\"metagpt/document.py:Document\",\"attributes\":{\"author\":{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"reviews\":{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"from_text\":{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:author"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:path"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:reviews"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_text"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:persist"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:to_path"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Document", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Document", "target": "{\"lineno\":62,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"author\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"reviews\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:author", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:author", "target": "{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:reviews", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:reviews", "target": "{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:status", "target": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:from_text", "target": "{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:to_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:to_path", "target": "{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"package\":\"metagpt/schema.py:Document\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]},\"root_relative_path\":{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}},\"methods\":{\"get_meta\":{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Document\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_path"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_relative_path"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:get_meta"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Document", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__str__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Document", "target": "{\"lineno\":127,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:root_path", "target": "{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:root_relative_path", "target": "{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:get_meta", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:get_meta", "target": "{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"package\":\"metagpt/document.py:DocumentStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:DocumentStatus:name"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document"}, {"predicate": "isCompositeOn", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_page_info", "source": "metagpt/document.py:DocumentStatus", "target": "{\"lineno\":53,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:DocumentStatus:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"package\":\"metagpt/schema.py:Documents\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}},\"methods\":{\"from_iterable\":{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]},\"to_action_output\":{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}},\"compositions\":[\"Document\"],\"aggregations\":[\"Documents\",\"Iterable\",\"ActionOutput\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:docs"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:from_iterable"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:to_action_output"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Documents", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:Documents"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:Iterable"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:ActionOutput"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Documents", "target": "{\"lineno\":159,\"end_lineno\":186,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:docs", "target": "{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:from_iterable", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:from_iterable", "target": "{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:to_action_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:to_action_output", "target": "{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"name\":\"DotClassAttribute\",\"package\":\"metagpt/repo_parser.py:DotClassAttribute\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"default_\":{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]},\"parse_compositions\":{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]},\"remove_white_spaces\":{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotClassAttribute\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:default_"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:type_"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:parse"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:sort"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "?:DotClassAttribute"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:_split_literal"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"lineno\":42,\"end_lineno\":157,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"name\":\"DotClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"default_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:default_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:default_", "target": "{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:type_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:type_", "target": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions", "target": "{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces", "target": "{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"name\":\"DotClassInfo\",\"package\":\"metagpt/repo_parser.py:DotClassInfo\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"attributes\":{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"methods\":{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}},\"methods\":{\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[\"DotClassAttribute\",\"DotClassMethod\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:attributes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:methods"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:package"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:sort"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassMethod"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"lineno\":160,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"name\":\"DotClassInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassMethod]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "?:DotClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "?:DotClassMethod"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:attributes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:attributes", "target": "{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:methods", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:methods", "target": "{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:package", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:package", "target": "{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"name\":\"DotClassMethod\",\"package\":\"metagpt/repo_parser.py:DotClassMethod\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"return_args\":{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}},\"compositions\":[\"DotClassAttribute\",\"DotReturn\"],\"aggregations\":[\"DotClassMethod\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:return_args"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:parse"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotClassMethod"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotReturn"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:_parse_name"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:_parse_args"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"lineno\":202,\"end_lineno\":264,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"name\":\"DotClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"return_args\",\"visibility\":\"+\",\"value_type\":\"Optional[DotReturn]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotReturn"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:args", "target": "{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:return_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:return_args", "target": "{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"name\":\"DotClassRelationship\",\"package\":\"metagpt/repo_parser.py:DotClassRelationship\",\"attributes\":{\"dest\":{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]},\"src\":{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:dest"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:label"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:relationship"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:src"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"lineno\":175,\"end_lineno\":179,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassRelationship\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"name\":\"DotClassRelationship\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dest\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:dest", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:dest", "target": "{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:label", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:label", "target": "{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:relationship", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:relationship", "target": "{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:src", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:src", "target": "{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"name\":\"DotReturn\",\"package\":\"metagpt/repo_parser.py:DotReturn\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotReturn\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:type_"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:parse"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:sort"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotReturn", "target": "?:DotReturn\\"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"lineno\":182,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotReturn\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"name\":\"DotReturn\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:type_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:type_", "target": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Embedding\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]},\"object\":{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"lineno\":19,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"object\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/engineer.py", "target": "metagpt/roles/engineer.py:Engineer"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"package\":\"metagpt/roles/engineer.py:Engineer\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"code_todos\":{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"n_borg\":{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]},\"n_summarize\":{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"next_todo_action\":{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"summarize_todos\":{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]},\"use_code_review\":{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:action_description"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_summarize"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:src_workspace"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"lineno\":62,\"end_lineno\":360,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_borg\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_summarize\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"description\":\"The source code represents an Engineer role responsible for writing and possibly reviewing code. It includes attributes and methods for writing and reviewing code, summarizing code, and writing code plan and change. It also includes methods for determining the mode of action, thinking, and acting based on whether code review is used.\",\"use_cases\":[{\"description\":\"Write Code\",\"inputs\":[\"coding_context\"],\"outputs\":[\"changed_files\"],\"actors\":[\"Engineer\"],\"steps\":[\"Select essential information from the historical data to reduce the length of the prompt\",\"Run the code review if enabled\",\"Save the changed files and relevant messages\",\"Return the changed files\"],\"reason\":\"When the engineer needs to write code\"},{\"description\":\"Summarize Code\",\"inputs\":[\"summary\"],\"outputs\":[\"tasks\"],\"actors\":[\"Engineer\"],\"steps\":[\"Run the code summary for each pair of (system_design_doc, task_doc)\",\"Save the summary and check if it passes\",\"Send the summary to QA Engineer if needed\",\"Return the tasks if not passed\"],\"reason\":\"When the engineer needs to summarize code\"},{\"description\":\"Write Code Plan and Change\",\"inputs\":[\"files\",\"requirement\"],\"outputs\":[\"code_plan_and_change\"],\"actors\":[\"Engineer\"],\"steps\":[\"Write code plan and change that guides subsequent WriteCode and WriteCodeReview\",\"Save the code plan and change\",\"Return the code plan and change\"],\"reason\":\"When the engineer needs to write code plan and change\"}],\"relationship\":[\"Write Code is performed by Engineer\",\"Summarize Code is performed by Engineer\",\"Write Code Plan and Change is performed by Engineer\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/engineer.py:Engineer", "target": "\nsequenceDiagram\n participant Engineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_summarize", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:n_summarize", "target": "{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:EnronTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"package\":\"metagpt/learn/skill_loader.py:Entity\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}},\"methods\":{},\"compositions\":[\"Skill\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:skills"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"List[Skill]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Entity", "target": "?:Skill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/environment.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment.py", "target": "metagpt/environment.py:Environment"}, {"predicate": "is", "source": "metagpt/environment.py:Environment", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment", "target": "{\"name\":\"Environment\",\"package\":\"metagpt/environment.py:Environment\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"member_addrs\":{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"roles\":{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}},\"methods\":{\"add_role\":{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]},\"add_roles\":{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]},\"get_addresses\":{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]},\"get_role\":{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]},\"get_roles\":{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]},\"init_roles\":{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]},\"role_names\":{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}},\"compositions\":[\"Role\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:context"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:desc"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:history"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:member_addrs"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:add_role"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:add_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:archive"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_addresses"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_role"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:init_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:role_names"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:run"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:set_addresses"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/environment.py:Environment", "target": "?:Iterable"}, {"predicate": "isAggregateOf", "source": "metagpt/environment.py:Environment", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "metagpt/team.py:Team"}, {"predicate": "isCompositeOn", "source": "metagpt/environment.py:Environment", "target": "metagpt/team.py:Team:env"}, {"predicate": "is_composite_of", "source": "metagpt/environment.py:Environment", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:Environment", "target": "{\"lineno\":26,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment.py:Environment", "target": "{\"name\":\"Environment\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"member_addrs\",\"visibility\":\"+\",\"value_type\":\"dict[Role,Set]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"visibility\":\"+\",\"value_type\":\"dict[str,SerializeAsAny[Role]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "?:Role"}, {"predicate": "has_class_use_case", "source": "metagpt/environment.py:Environment", "target": "{\"description\":\"The source code defines an Environment class that hosts a batch of roles. Roles can publish messages to the environment and can be observed by other roles. The environment also provides methods to add roles, publish messages, run role processes, and manage role addresses.\",\"use_cases\":[{\"description\":\"Add a role to the current environment\",\"inputs\":[\"role: Role\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add the role to the roles dictionary of the environment\",\"Set the environment for the role\",\"Set the context for the role\"],\"reason\":\"When a new role needs to be added to the environment\"},{\"description\":\"Add a batch of roles to the current environment\",\"inputs\":[\"roles: Iterable[Role]\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add each role to the roles dictionary of the environment\",\"Set the environment for each role\",\"Set the context for each role\"],\"reason\":\"When multiple roles need to be added to the environment\"},{\"description\":\"Publish a message to the recipients in the environment\",\"inputs\":[\"message: Message\",\"peekable: bool\"],\"outputs\":[\"bool\"],\"actors\":[\"Environment\"],\"steps\":[\"Iterate through the member addresses of the environment\",\"Check if the message is to be sent to the current recipient\",\"If found, put the message in the recipient's queue\",\"Update the history of the environment\"],\"reason\":\"When a message needs to be distributed to the recipients in the environment\"},{\"description\":\"Process all role runs at once\",\"inputs\":[\"k: int\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"For each role, initiate a run process\",\"Gather all the run processes using asyncio\",\"Check if all actions have been executed\"],\"reason\":\"When all role processes need to be executed at once\"},{\"description\":\"Get all roles in the environment\",\"inputs\":[],\"outputs\":[\"dict[str, Role]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the roles dictionary of the environment\"],\"reason\":\"When all roles in the environment need to be retrieved\"},{\"description\":\"Get a specific role in the environment\",\"inputs\":[\"name: str\"],\"outputs\":[\"Role\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the role with the specified name from the roles dictionary of the environment\"],\"reason\":\"When a specific role in the environment needs to be retrieved\"},{\"description\":\"Get all role names in the environment\",\"inputs\":[],\"outputs\":[\"list[str]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return a list of names of all roles in the environment\"],\"reason\":\"When all role names in the environment need to be retrieved\"},{\"description\":\"Get the addresses of the object\",\"inputs\":[\"obj\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Return the addresses of the specified object from the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be retrieved\"},{\"description\":\"Set the addresses of the object\",\"inputs\":[\"obj\",\"addresses\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Set the addresses of the specified object in the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be updated\"},{\"description\":\"Archive the environment\",\"inputs\":[\"auto_archive: bool\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"If auto_archive is true and the environment has a git repository, archive the repository\"],\"reason\":\"When the environment needs to be archived, and auto archiving is enabled\"}],\"relationship\":[\"The 'Add a role to the current environment' use case is related to the 'Add a batch of roles to the current environment' use case as it involves adding roles to the environment.\",\"The 'Publish a message to the recipients in the environment' use case is related to the 'Process all role runs at once' use case as it involves distributing messages to the roles in the environment and processing their runs.\",\"The 'Get all roles in the environment' use case is related to the 'Get a specific role in the environment' use case and the 'Get all role names in the environment' use case as it involves retrieving information about roles in the environment.\",\"The 'Get the addresses of the object' use case is related to the 'Set the addresses of the object' use case as it involves managing addresses of objects in the environment.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/environment.py:Environment", "target": "\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:history", "target": "{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:is_idle", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:is_idle", "target": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:is_idle", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:member_addrs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:member_addrs", "target": "{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:roles", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:roles", "target": "{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:add_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:add_role", "target": "{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:add_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:add_roles", "target": "{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:archive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:archive", "target": "{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:get_addresses", "target": "{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:get_role", "target": "{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:get_roles", "target": "{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:init_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:init_roles", "target": "{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:role_names", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:role_names", "target": "{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:set_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:set_addresses", "target": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"package\":\"metagpt/learn/skill_loader.py:Example\",\"attributes\":{\"answer\":{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:answer"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:ask"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"answer\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/execute_task.py", "target": "metagpt/actions/execute_task.py:ExecuteTask"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"package\":\"metagpt/actions/execute_task.py:ExecuteTask\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/faiss_store.py", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"package\":\"metagpt/document_store/faiss_store.py:FaissStore\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]},\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]},\"asearch\":{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"OpenAIEmbeddings\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "?:OpenAIEmbeddings"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"lineno\":21,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file.py", "target": "metagpt/utils/file.py:File"}, {"predicate": "is", "source": "metagpt/utils/file.py:File", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"package\":\"metagpt/utils/file.py:File\",\"attributes\":{\"CHUNK_SIZE\":{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}},\"methods\":{\"read\":{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"bytes\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"predicate": "has_class_method", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:read"}, {"predicate": "has_class_method", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:write"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file.py:File", "target": "?:bytes"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file.py:File", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:File", "target": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:read", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:read", "target": "{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file_repository.py", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"package\":\"metagpt/utils/file_repository.py:FileRepository\",\"attributes\":{\"all_files\":{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]},\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]},\"get_all\":{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]},\"get_change_dir_files\":{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]},\"get_changed_dependency\":{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"new_filename\":{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]},\"save_doc\":{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]},\"save_pdf\":{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"Document\\\\\",\"Document\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_pdf"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Path\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Document\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"lineno\":25,\"end_lineno\":240,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"description\":\"This source code defines a class representing a FileRepository associated with a Git repository. The class includes methods for saving, getting, and deleting files, as well as managing file dependencies and generating new filenames.\",\"use_cases\":[{\"description\":\"Save content to a file and update its dependencies.\",\"inputs\":[\"filename\",\"content\",\"dependencies\"],\"outputs\":[\"Document\"],\"actors\":[\"Document\",\"Path\",\"List\"],\"steps\":[\"Create the pathname for the file within the repository.\",\"Write the content to the file.\",\"Update the dependencies if provided.\",\"Return the saved document.\"],\"reason\":\"When new content needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Get the dependencies of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the pathname of the file within the repository.\",\"Get the dependencies of the file.\",\"Return the set of dependencies.\"],\"reason\":\"When the dependencies of a file need to be retrieved.\"},{\"description\":\"Get the dependencies of a file that have changed.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Get the dependencies of the file.\",\"Identify the changed dependent files.\",\"Return the set of changed dependencies.\"],\"reason\":\"When the dependencies of a file that have changed need to be retrieved.\"},{\"description\":\"Read the content of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Document\",\"None\"],\"actors\":[\"Path\"],\"steps\":[\"Create a document instance for the file.\",\"Read the content of the file.\",\"Return the document with the content or None if the file does not exist.\"],\"reason\":\"When the content of a file needs to be read.\"},{\"description\":\"Get the content of all files in the repository.\",\"inputs\":[\"filter_ignored\"],\"outputs\":[\"List[Document]\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the content of all files in the repository.\",\"Return a list of document instances representing the files.\"],\"reason\":\"When the content of all files in the repository needs to be retrieved.\"},{\"description\":\"Get the files in a directory that have changed.\",\"inputs\":[\"dir\"],\"outputs\":[\"List\"],\"actors\":[\"Path\"],\"steps\":[\"Identify the changed files within the directory.\",\"Return the list of changed files.\"],\"reason\":\"When the changed files within a directory need to be retrieved.\"},{\"description\":\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"inputs\":[],\"outputs\":[\"str\"],\"actors\":[],\"steps\":[\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"Return the new filename.\"],\"reason\":\"When a new filename needs to be generated.\"},{\"description\":\"Save content to a file and update its dependencies using a Document instance.\",\"inputs\":[\"doc\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Save the content of the document to a file.\",\"Update the dependencies if provided.\"],\"reason\":\"When the content of a document needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Save a Document instance as a PDF file.\",\"inputs\":[\"doc\",\"with_suffix\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Convert the content of the document to Markdown.\",\"Save it to a file with an optional specified suffix.\",\"Log the saved file.\"],\"reason\":\"When a document instance needs to be saved as a PDF file.\"},{\"description\":\"Delete a file from the file repository.\",\"inputs\":[\"filename\"],\"outputs\":[],\"actors\":[\"Path\"],\"steps\":[\"Delete the file from the file repository.\"],\"reason\":\"When a file needs to be deleted from the file repository.\"}],\"relationship\":[\"Save content to a file and update its dependencies is related to Get the dependencies of a file.\",\"Save content to a file and update its dependencies is related to Get the dependencies of a file that have changed.\",\"Save content to a file and update its dependencies is related to Read the content of a file.\",\"Save content to a file and update its dependencies is related to Get the content of all files in the repository.\",\"Save content to a file and update its dependencies is related to Get the files in a directory that have changed.\",\"Save content to a file and update its dependencies is related to Generate a new filename based on the current timestamp and a UUID suffix.\",\"Save content to a file and update its dependencies is related to Save content to a file and update its dependencies using a Document instance.\",\"Save content to a file and update its dependencies is related to Save a Document instance as a PDF file.\",\"Save content to a file and update its dependencies is related to Delete a file from the file repository.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_pdf", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save_pdf", "target": "{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"model_grade_token_costs\":{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"lineno\":32,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksLLM\",\"attributes\":{\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"lineno\":74,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/fix_bug.py", "target": "metagpt/actions/fix_bug.py:FixBug"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"package\":\"metagpt/actions/fix_bug.py:FixBug\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/fix_bug.py:FixBug:name"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"package\":\"metagpt/tools/prompt_writer.py:GPTPromptGenerator\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]},\"gen_chatbot_style\":{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]},\"gen_instruction_style\":{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]},\"gen_query_style\":{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiGenerativeModel\",\"attributes\":{},\"methods\":{\"count_tokens\":{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]},\"count_tokens_async\":{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}},\"compositions\":[],\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "?:content_types.ContentsType"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "?:glm.CountTokensResponse"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"lineno\":29,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"aget_usage\":{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "?:GenerateContentResponse"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"lineno\":45,\"end_lineno\":143,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"package\":\"metagpt/provider/general_api_requestor.py:GeneralAPIRequestor\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"lineno\":38,\"end_lineno\":104,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/generate_questions.py", "target": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"package\":\"metagpt/actions/generate_questions.py:GenerateQuestions\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "?:ActionNode"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"lineno\":18,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"package\":\"metagpt/actions/invoice_ocr.py:GenerateTable\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"lineno\":122,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb\",\"attributes\":{\"domain\":{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]},\"ret\":{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]},\"spark_api_key\":{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]},\"spark_api_secret\":{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]},\"spark_appid\":{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]},\"text\":{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}},\"methods\":{\"gen_params\":{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]},\"on_close\":{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close(ws, one, two)\",\"aggregations\":[]},\"on_error\":{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]},\"on_message\":{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]},\"on_open\":{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"send\":{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"lineno\":46,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close(ws, one, two)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"package\":\"metagpt/utils/git_repository.py:GitRepository\",\"attributes\":{\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"is_valid\":{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"add_change\":{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]},\"commit\":{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]},\"delete_repository\":{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]},\"filter_gitignore\":{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]},\"get_files\":{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]},\"is_git_dir\":{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]},\"new_file_repository\":{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]},\"open\":{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]},\"rename_root\":{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"DependencyFile\",\"FileRepository\",\"Path\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:status"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:open"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:Path\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:DependencyFile"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:FileRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:Path"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/context.py:Context:git_repo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isAggregateOn", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:_git_repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"lineno\":35,\"end_lineno\":285,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_valid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"description\":\"This source code defines a class `GitRepository` that represents a Git repository. It provides methods to interact with the repository, such as opening an existing repository, initializing a new repository, adding or removing files from the staging area, committing changes, deleting the repository, and more.\",\"use_cases\":[{\"description\":\"Open an existing Git repository or initialize a new one.\",\"inputs\":[\"local_path\",\"auto_init\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the provided path is a Git repository\",\"If it is a Git repository, open it and set the repository attribute\",\"If it is not a Git repository and auto_init is True, initialize a new Git repository at the provided path\"],\"reason\":\"When a user wants to open an existing Git repository or initialize a new one for further operations.\"},{\"description\":\"Add or remove files from the staging area based on the provided changes.\",\"inputs\":[\"files\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Iterate through the provided files and their change types\",\"Add or remove files from the staging area based on the change types\"],\"reason\":\"When a user wants to stage changes in the Git repository.\"},{\"description\":\"Commit the staged changes with the given comments.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Commit the staged changes with the provided comments\"],\"reason\":\"When a user wants to commit the staged changes in the Git repository.\"},{\"description\":\"Delete the entire repository directory.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Delete the entire repository directory if it is valid\"],\"reason\":\"When a user wants to delete the entire Git repository directory.\"},{\"description\":\"Return a dictionary of changed files and their change types.\",\"inputs\":[],\"outputs\":[\"changed_files\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the untracked files and their change types\",\"Retrieve the changed files and their change types from the index\",\"Combine the untracked and changed files into a dictionary\"],\"reason\":\"When a user wants to get the changed files in the Git repository.\"},{\"description\":\"Check if the specified directory is a Git repository.\",\"inputs\":[\"local_path\"],\"outputs\":[\"is_git_dir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the specified directory contains a .git directory\"],\"reason\":\"When a user wants to check if a directory is a Git repository.\"},{\"description\":\"Check if the Git repository is valid (exists and is initialized).\",\"inputs\":[],\"outputs\":[\"is_valid\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the repository attribute is not None\"],\"reason\":\"When a user wants to check if the Git repository is valid.\"},{\"description\":\"Return the Git repository's status as a string.\",\"inputs\":[],\"outputs\":[\"status\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the status of the Git repository using GitPython\"],\"reason\":\"When a user wants to get the status of the Git repository.\"},{\"description\":\"Return the path to the working directory of the Git repository.\",\"inputs\":[],\"outputs\":[\"workdir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the path to the working directory if the repository is valid\"],\"reason\":\"When a user wants to get the working directory of the Git repository.\"},{\"description\":\"Archive the current state of the Git repository.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Add all changed files to the staging area\",\"Commit the changes with the provided comments\"],\"reason\":\"When a user wants to archive the current state of the Git repository.\"},{\"description\":\"Create a new instance of FileRepository associated with this Git repository.\",\"inputs\":[\"relative_path\"],\"outputs\":[\"FileRepository\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Create a new instance of FileRepository with the provided relative path\"],\"reason\":\"When a user wants to create a new instance of FileRepository associated with the Git repository.\"},{\"description\":\"Get the dependency file associated with the Git repository.\",\"inputs\":[],\"outputs\":[\"DependencyFile\"],\"actors\":[\"FileRepository\"],\"steps\":[\"If the dependency file is not available, create a new instance of DependencyFile\"],\"reason\":\"When a user wants to get the dependency file associated with the Git repository.\"},{\"description\":\"Rename the root directory of the Git repository.\",\"inputs\":[\"new_dir_name\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Rename the root directory of the Git repository to the provided new name\"],\"reason\":\"When a user wants to rename the root directory of the Git repository.\"},{\"description\":\"Retrieve a list of files in the specified relative path.\",\"inputs\":[\"relative_path\",\"root_relative_path\",\"filter_ignored\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the list of files in the specified relative path\",\"Recursively retrieve files from subdirectories if present\",\"Filter the files based on .gitignore rules if required\"],\"reason\":\"When a user wants to retrieve a list of files in the specified relative path within the Git repository.\"},{\"description\":\"Filter a list of filenames based on .gitignore rules.\",\"inputs\":[\"filenames\",\"root_relative_path\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Filter the list of filenames based on .gitignore rules\"],\"reason\":\"When a user wants to filter a list of filenames based on .gitignore rules.\"}],\"relationship\":[\"Open an existing Git repository or initialize a new one can be performed by FileRepository\",\"Add or remove files from the staging area based on the provided changes can be performed by FileRepository\",\"Commit the staged changes with the given comments can be performed by FileRepository\",\"Delete the entire repository directory can be performed by FileRepository\",\"Return a dictionary of changed files and their change types can be performed by FileRepository\",\"Check if the specified directory is a Git repository can be performed by FileRepository\",\"Check if the Git repository is valid (exists and is initialized) can be performed by FileRepository\",\"Return the Git repository's status as a string can be performed by FileRepository\",\"Return the path to the working directory of the Git repository can be performed by FileRepository\",\"Archive the current state of the Git repository can be performed by FileRepository\",\"Create a new instance of FileRepository associated with this Git repository can be performed by FileRepository\",\"Get the dependency file associated with the Git repository can be performed by FileRepository\",\"Rename the root directory of the Git repository can be performed by FileRepository\",\"Retrieve a list of files in the specified relative path can be performed by FileRepository\",\"Filter a list of filenames based on .gitignore rules can be performed by FileRepository\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"package\":\"metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper\",\"attributes\":{\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"google_api_client\":{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]},\"google_api_key\":{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]},\"google_cse_id\":{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"check_google_api_key\":{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]},\"check_google_cse_id\":{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:futures.Executor"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:asyncio.AbstractEventLoop"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:\\"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"google_api_client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key", "target": "{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id", "target": "{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key", "target": "{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id", "target": "{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:SPO"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"package\":\"metagpt/utils/graph_repository.py:GraphKeyword\",\"attributes\":{\"CLASS\":{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]},\"CLASS_METHOD\":{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]},\"CLASS_PROPERTY\":{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]},\"FUNCTION\":{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]},\"GLOBAL_VARIABLE\":{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]},\"HAS_CLASS\":{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]},\"HAS_CLASS_METHOD\":{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]},\"HAS_CLASS_PROPERTY\":{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]},\"HAS_CLASS_USE_CASE\":{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]},\"HAS_CLASS_VIEW\":{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]},\"HAS_DETAIL\":{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]},\"HAS_FUNCTION\":{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]},\"HAS_PAGE_INFO\":{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]},\"HAS_PARTICIPANT\":{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW\":{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]},\"IS\":{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]},\"IS_AGGREGATE_OF\":{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]},\"IS_COMPOSITE_OF\":{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]},\"NULL\":{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]},\"OF\":{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]},\"ON\":{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]},\"SOURCE_CODE\":{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"lineno\":21,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_USE_CASE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_DETAIL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PARTICIPANT\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_AGGREGATE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_COMPOSITE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"NULL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ON\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD", "target": "{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD", "target": "{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE", "target": "{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL", "target": "{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT", "target": "{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF", "target": "{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF", "target": "{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"package\":\"metagpt/utils/graph_repository.py:GraphRepository\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"rebuild_composition_relationship\":{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]},\"update_graph_db_with_class_relationship_views\":{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]},\"update_graph_db_with_class_views\":{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]},\"update_graph_db_with_file_info\":{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}},\"compositions\":[],\"aggregations\":[\"GraphRepository\",\"SPO\",\"DotClassRelationship\",\"DotClassInfo\",\"RepoFileInfo\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:GraphRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:SPO"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:DotClassRelationship"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:DotClassInfo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:RepoFileInfo"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"lineno\":52,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship", "target": "{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:save", "target": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/human_interaction.py", "target": "metagpt/utils/human_interaction.py:HumanInteraction"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"name\":\"HumanInteraction\",\"package\":\"metagpt/utils/human_interaction.py:HumanInteraction\",\"attributes\":{\"stop_list\":{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}},\"methods\":{\"check_input_type\":{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]},\"input_num_until_valid\":{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]},\"input_until_valid\":{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]},\"interact_with_instruct_content\":{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]},\"multilines_input\":{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[\"tuple\"],\"aggregations\":[\"Type\",\"BaseModel\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:Type"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:BaseModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"lineno\":14,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanInteraction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"name\":\"HumanInteraction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stop_list\",\"visibility\":\"+\",\"value_type\":\"tuple\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list", "target": "{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type", "target": "{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid", "target": "{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid", "target": "{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content", "target": "{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input", "target": "{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/human_provider.py", "target": "metagpt/provider/human_provider.py:HumanProvider"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"package\":\"metagpt/provider/human_provider.py:HumanProvider\",\"attributes\":{\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:system_prompt", "target": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTS\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}},\"methods\":{\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"lineno\":51,\"end_lineno\":113,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]},\"sid\":{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AudioData\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"predicate": "is_composite_of", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"lineno\":41,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Optional[AudioData]\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "?:AudioData"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"lineno\":29,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "{\"name\":\"ImageResult\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult\",\"attributes\":{\"images\":{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "{\"name\":\"ImageResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"images\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"package\":\"metagpt/document.py:IndexableDocument\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]},\"get_docs_and_metadatas\":{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}},\"compositions\":[\"pd.DataFrame\"],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:data"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:model_config"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:IndexableDocument", "target": "?:pd.DataFrame"}, {"predicate": "isAggregateOf", "source": "metagpt/document.py:IndexableDocument", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:Document"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"predicate": "has_page_info", "source": "metagpt/document.py:IndexableDocument", "target": "{\"lineno\":114,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame,list]\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:data", "target": "{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceData\",\"attributes\":{\"invoice_data\":{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"invoice_data\",\"visibility\":\"+\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"package\":\"metagpt/actions/invoice_ocr.py:InvoiceOCR\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"lineno\":31,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"orc_data\":{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]},\"origin_query\":{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"orc_data\",\"visibility\":\"+\",\"value_type\":\"Optional[list]\",\"default_value\":\"\"},{\"name\":\"origin_query\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoicePath\",\"attributes\":{\"file_path\":{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"file_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/llm_config.py", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "has_class", "source": "metagpt/configs/llm_config.py", "target": "metagpt/configs/llm_config.py:LLMType"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"name\":\"LLMConfig\",\"package\":\"metagpt/configs/llm_config.py:LLMConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]},\"best_of\":{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]},\"calc_usage\":{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]},\"domain\":{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]},\"frequency_penalty\":{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]},\"logprobs\":{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]},\"max_token\":{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"n\":{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]},\"presence_penalty\":{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"repetition_penalty\":{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]},\"stop\":{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]},\"stream\":{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]},\"temperature\":{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]},\"timeout\":{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]},\"top_k\":{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]},\"top_logprobs\":{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]},\"top_p\":{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}},\"methods\":{\"check_llm_key\":{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_version"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:app_id"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:base_url"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:best_of"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:calc_usage"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:domain"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:logprobs"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:max_token"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:model"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:n"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:proxy"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:stop"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:stream"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:temperature"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:timeout"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_k"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_p"}, {"predicate": "has_class_method", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/config2.py:Config:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"lineno\":32,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"name\":\"LLMConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"best_of\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"frequency_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[bool]\",\"default_value\":\"\"},{\"name\":\"max_token\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"n\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"presence_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"repetition_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"stop\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"stream\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"temperature\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_k\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"top_p\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"description\":\"This source code defines a class LLMConfig which represents the configuration for an LLM (Language Model) system. It includes various fields such as API key, base URL, model, app ID, and other parameters for controlling the behavior of the LLM system.\",\"use_cases\":[{\"description\":\"Configure LLM system\",\"inputs\":[\"api_key\",\"api_type\",\"base_url\",\"api_version\",\"model\",\"app_id\",\"api_secret\",\"domain\",\"max_token\",\"temperature\",\"top_p\",\"top_k\",\"repetition_penalty\",\"stop\",\"presence_penalty\",\"frequency_penalty\",\"best_of\",\"n\",\"stream\",\"logprobs\",\"top_logprobs\",\"timeout\",\"proxy\",\"calc_usage\"],\"outputs\":[],\"actors\":[\"System Administrator\"],\"steps\":[\"The system administrator provides the configuration parameters for the LLM system.\",\"The system validates the provided configuration parameters.\",\"The LLM system is configured with the provided parameters.\"],\"reason\":\"The external system needs to configure the LLM system with specific parameters to control its behavior and functionality.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_version", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_version", "target": "{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:base_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:base_url", "target": "{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:best_of", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:best_of", "target": "{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:calc_usage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:calc_usage", "target": "{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:domain", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:domain", "target": "{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty", "target": "{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:logprobs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:logprobs", "target": "{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:max_token", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:max_token", "target": "{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:model", "target": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:n", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:n", "target": "{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty", "target": "{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty", "target": "{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:stop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:stop", "target": "{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:stream", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:stream", "target": "{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:temperature", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:temperature", "target": "{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:timeout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:timeout", "target": "{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_k", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_k", "target": "{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs", "target": "{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_p", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_p", "target": "{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key", "target": "{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:create_llm_instance"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"package\":\"metagpt/provider/llm_provider_registry.py:LLMProviderRegistry\",\"attributes\":{\"providers\":{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}},\"methods\":{\"get_provider\":{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]},\"register\":{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"LLMType\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "?:LLMType"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"lineno\":12,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"providers\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"name\":\"LLMType\",\"package\":\"metagpt/configs/llm_config.py:LLMType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"predicate": "has_class_method", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"lineno\":16,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"name\":\"LLMType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/lancedb_store.py", "target": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"package\":\"metagpt/document_store/lancedb_store.py:LanceStore\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"table\":{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"drop\":{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\",\"LanceTable\",\"RemoteTable\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:LanceDBConnection"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:RemoteDBConnection"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:LanceTable"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:RemoteTable"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"LanceDBConnection,RemoteDBConnection\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"visibility\":\"+\",\"value_type\":\"LanceTable,NoneType,RemoteTable\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"package\":\"metagpt/document_store/base_store.py:LocalStore\",\"attributes\":{\"cache_dir\":{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"fname\":{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]},\"raw_data_path\":{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:store"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"lineno\":28,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cache_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"fname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/longterm_memory.py", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"package\":\"metagpt/memory/longterm_memory.py:LongTermMemory\",\"attributes\":{\"memory_storage\":{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_from_recover\":{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}},\"compositions\":[\"RoleContext\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"lineno\":18,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"memory_storage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "?:RoleContext"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"package\":\"metagpt/strategy/tot.py:MCTSSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}},\"methods\":{\"add_documents\":{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]},\"set_index\":{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}},\"compositions\":[\"Client\"],\"aggregations\":[\"DataSource\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "?:Client"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "?:DataSource"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"Client\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory.py", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"package\":\"metagpt/memory/memory.py:Memory\",\"attributes\":{\"ignore_id\":{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]},\"storage\":{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"add_batch\":{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"count\":{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"delete_newest\":{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_action\":{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_actions\":{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_content\":{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_role\":{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]},\"try_remember\":{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:ignore_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:index"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:storage"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add_batch"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:clear"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:count"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete_newest"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:find_news"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_action"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_content"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_role"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:try_remember"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:DefaultDict"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:Iterable"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:Memory", "target": "{\"lineno\":19,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ignore_id\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_value\":\"\"},{\"name\":\"storage\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:index", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:index", "target": "{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:storage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:storage", "target": "{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:clear", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:clear", "target": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:count", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:count", "target": "{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory_storage.py", "target": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"package\":\"metagpt/memory/memory_storage.py:MemoryStorage\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"is_initialized\":{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]},\"mem_ttl\":{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]},\"role_mem_path\":{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]},\"clean\":{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]},\"search_dissimilar\":{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"OpenAIEmbeddings\",\"Path\",\"FAISS\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:OpenAIEmbeddings"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:Path"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:FAISS"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"lineno\":21,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"is_initialized\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"visibility\":\"+\",\"value_type\":\"Optional[str],Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"NoneType,Optional[FAISS]\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/mermaid_config.py", "target": "metagpt/configs/mermaid_config.py:MermaidConfig"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"name\":\"MermaidConfig\",\"package\":\"metagpt/configs/mermaid_config.py:MermaidConfig\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:engine"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:path"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/config2.py:Config:mermaid"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MermaidConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"name\":\"MermaidConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:engine", "target": "{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:path", "target": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config", "target": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"package\":\"metagpt/schema.py:Message\",\"attributes\":{\"cause_by\":{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"id\":{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]},\"send_to\":{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]},\"sent_from\":{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}},\"methods\":{\"check_cause_by\":{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]},\"check_id\":{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]},\"check_instruct_content\":{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]},\"check_send_to\":{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]},\"check_sent_from\":{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]},\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]},\"ser_instruct_content\":{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:id"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:role"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:send_to"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:sent_from"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_cause_by"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_id"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_send_to"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_sent_from"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:dump"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:load"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:ser_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:to_dict"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "?:BaseModel"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__init__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__setattr__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__str__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Message", "target": "{\"lineno\":189,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cause_by\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel]\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"send_to\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"sent_from\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:Message", "target": "{\"description\":\"This source code defines a Message class that represents a message with various attributes and methods for validation and serialization. It also includes methods for converting the message object to a dictionary and JSON string, as well as loading a message from a JSON string.\",\"use_cases\":[{\"description\":\"Create a new message with the given content, instruct content, role, cause by, sent from, and send to.\",\"inputs\":[\"content\",\"instruct_content\",\"role\",\"cause_by\",\"sent_from\",\"send_to\"],\"outputs\":[\"message_id\"],\"actors\":[\"User\"],\"steps\":[\"Validate and set the message ID if not provided\",\"Validate and set the instruct content if provided\",\"Validate and set the cause by if provided\",\"Validate and set the sent from if provided\",\"Validate and set the send to if provided\",\"Create a new message object with the provided data\",\"Return the message ID\"],\"reason\":\"When a user wants to create a new message with specific attributes.\"},{\"description\":\"Convert the message object to a dictionary containing role and content.\",\"inputs\":[],\"outputs\":[\"message_dict\"],\"actors\":[\"User\"],\"steps\":[\"Create a dictionary with role and content attributes of the message object\",\"Return the created dictionary\"],\"reason\":\"When a user needs to convert a message object to a dictionary.\"},{\"description\":\"Convert the message object to a JSON string.\",\"inputs\":[],\"outputs\":[\"json_string\"],\"actors\":[\"User\"],\"steps\":[\"Convert the message object to a JSON string\",\"Return the JSON string\"],\"reason\":\"When a user needs to convert a message object to a JSON string.\"},{\"description\":\"Load a message object from a JSON string.\",\"inputs\":[\"json_string\"],\"outputs\":[\"message_object\"],\"actors\":[\"User\"],\"steps\":[\"Parse the JSON string to a dictionary\",\"Create a message object from the dictionary\",\"Return the created message object\"],\"reason\":\"When a user needs to load a message object from a JSON string.\"}],\"relationship\":[\"Create a new message use case is related to Convert the message object to a dictionary use case and Convert the message object to a JSON string use case.\",\"Load a message object from a JSON string use case is independent of other use cases.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:Message", "target": "\nsequenceDiagram\n participant User\n participant Message\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n"}, {"predicate": "is", "source": "metagpt/schema.py:Message:cause_by", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:cause_by", "target": "{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:id", "target": "{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:role", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:role", "target": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:send_to", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:send_to", "target": "{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:sent_from", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:sent_from", "target": "{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_cause_by", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_cause_by", "target": "{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_id", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_id", "target": "{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_send_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_send_to", "target": "{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_sent_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_sent_from", "target": "{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:dump", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:dump", "target": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:to_dict", "target": "{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"package\":\"metagpt/schema.py:MessageQueue\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"empty\":{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]},\"pop\":{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"pop_all\":{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]},\"push\":{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"MessageQueue\",\"Message\\\\\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:model_config"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:dump"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:empty"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:load"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop_all"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:push"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:MessageQueue"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:Message\\"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:MessageQueue", "target": "{\"lineno\":334,\"end_lineno\":403,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:dump", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:dump", "target": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:empty", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:empty", "target": "{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:pop", "target": "{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:push", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:push", "target": "{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"package\":\"metagpt/roles/assistant.py:MessageType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:MessageType", "target": "metagpt/roles/assistant.py:MessageType:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"lineno\":32,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/metagpt_api.py", "target": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"package\":\"metagpt/provider/metagpt_api.py:MetaGPTLLM\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"lineno\":14,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image\",\"attributes\":{\"model_url\":{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}},\"methods\":{\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"predicate": "has_class_method", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"predicate": "has_class_method", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"lineno\":19,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:Strategy"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"package\":\"metagpt/strategy/tot_schema.py:MethodSelect\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/moderation.py", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"package\":\"metagpt/tools/moderation.py:Moderation\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"amoderation_with_categories\":{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]},\"handle_moderation_results\":{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"package\":\"metagpt/utils/common.py:NoMoneyException\",\"attributes\":{\"amount\":{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:amount"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:message"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"lineno\":307,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"amount\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"description\":\"The source code defines a custom exception class called NoMoneyException, which is raised when an operation cannot be completed due to insufficient funds. The exception includes the amount required and a message indicating the insufficient funds.\",\"use_cases\":[],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/common.py:NoMoneyException", "target": "\nsequenceDiagram\n participant User\n participant SourceCode\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:OCRResults\",\"attributes\":{\"ocr_result\":{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ocr_result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/ollama_api.py", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"package\":\"metagpt/provider/ollama_api.py:OllamaLLM\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"http_method\":{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"suffix_url\":{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"lineno\":27,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_function", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:log_and_reraise"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"package\":\"metagpt/provider/openai_api.py:OpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]},\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"aspeech_to_text\":{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]},\"atext_to_speech\":{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\",\"ChatCompletion\",\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:AsyncOpenAI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:ChatCompletion"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is_composite_of", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_model"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"lineno\":52,\"end_lineno\":245,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI\",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:CostManager"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text", "target": "{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech", "target": "{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"package\":\"metagpt/provider/general_api_base.py:OpenAIResponse\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},\"operation_location\":{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]},\"request_id\":{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]},\"response_ms\":{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]},\"retry_after\":{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"operation_location\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"response_ms\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retry_after\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}},\"methods\":{\"text_2_embedding\":{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"lineno\":44,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"package\":\"metagpt/tools/openai_text_to_image.py:OpenAIText2Image\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"get_image_data\":{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]},\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"lineno\":17,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/open_llm_api.py", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"package\":\"metagpt/provider/open_llm_api.py:OpenLLM\",\"attributes\":{},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"lineno\":16,\"end_lineno\":47,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"package\":\"metagpt/utils/common.py:OutputParser\",\"attributes\":{},\"methods\":{\"extract_content\":{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]},\"extract_struct\":{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]},\"parse_data\":{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]},\"parse_data_with_mapping\":{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]},\"parse_python_code\":{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"type\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_content"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_str"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/common.py:OutputParser", "target": "?:type"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"lineno\":57,\"end_lineno\":231,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"package\":\"metagpt/learn/skill_loader.py:Parameter\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:type"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"package\":\"metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[\"Literal\\\\\",\"dict\\\\\"],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:Literal\\"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:dict\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:WebPage\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"lineno\":18,\"end_lineno\":95,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_documents.py", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"package\":\"metagpt/actions/prepare_documents.py:PrepareDocuments\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:config"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"lineno\":21,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_interview.py", "target": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"package\":\"metagpt/actions/prepare_interview.py:PrepareInterview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/product_manager.py", "target": "metagpt/roles/product_manager.py:ProductManager"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"package\":\"metagpt/roles/product_manager.py:ProductManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"todo_action\":{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"lineno\":16,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"description\":\"The source code represents a Product Manager role responsible for product development and management. It includes attributes such as name, profile, goal, and constraints. The role has methods to decide what to do and observe the environment.\",\"use_cases\":[{\"description\":\"Decide what to do\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Check if the git repository exists and the configuration for git reinitialization is not set\",\"Set the state to 1 if the conditions are met\",\"If the conditions are not met, set the state to 0, set the git reinitialization configuration to false, and update the todo action to WritePRD\",\"Return a boolean indicating if there are any pending actions\"],\"reason\":\"When the system needs to decide the next action to take based on the current state and environment\"},{\"description\":\"Observe the environment\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Call the observe method of the superclass with ignore_memory set to True\"],\"reason\":\"When the system needs to observe the environment and update its internal state\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "\nsequenceDiagram\n participant ProductManager\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/project_manager.py", "target": "metagpt/roles/project_manager.py:ProjectManager"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"package\":\"metagpt/roles/project_manager.py:ProjectManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"description\":\"The source code defines a Project Manager role with attributes such as name, profile, goal, and constraints. It also sets actions and watches for the Project Manager role.\",\"use_cases\":[{\"description\":\"Write Tasks\",\"inputs\":[\"task_list\",\"task_dependencies\"],\"outputs\":[\"task_breakdown\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive task list and task dependencies\",\"Analyze task dependencies\",\"Generate task breakdown\"],\"reason\":\"When the Project Manager needs to break down tasks according to PRD/technical design and analyze task dependencies.\"},{\"description\":\"Write Design\",\"inputs\":[\"user_requirement\",\"technical_design\"],\"outputs\":[\"task_list\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive user requirement and technical design\",\"Generate a task list\"],\"reason\":\"When the Project Manager needs to generate a task list based on user requirement and technical design.\"}],\"relationship\":[\"Write Tasks is required by Project Manager to break down tasks according to PRD/technical design and analyze task dependencies.\",\"Write Design is required by Project Manager to generate a task list based on user requirement and technical design.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "\nsequenceDiagram\n participant ProjectManager\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"name\":\"ProjectRepo\",\"package\":\"metagpt/utils/project_repo.py:ProjectRepo\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]},\"resources\":{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]},\"src_relative_path\":{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]},\"srcs\":{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]},\"test_outputs\":{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]},\"tests\":{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"code_files_exists\":{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]},\"with_src_path\":{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:git_repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:requirement"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:srcs"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:ProjectRepo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/context.py:Context:repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"lineno\":90,\"end_lineno\":142,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"name\":\"ProjectRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"resources\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"src_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"srcs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"test_outputs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tests\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"description\":\"The source code defines a class 'ProjectRepo' which is a file repository for a project. It contains methods to interact with the project's files and resources.\",\"use_cases\":[{\"description\":\"Retrieve project requirements\",\"inputs\":[],\"outputs\":[\"requirement\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class retrieves the project requirements from the 'docs' attribute using the 'requirement' property.\"],\"reason\":\"When the system needs to access the project requirements.\"},{\"description\":\"Check if code files exist\",\"inputs\":[],\"outputs\":[\"code_files_exist\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class checks if the code files exist by accessing the 'srcs' attribute and its 'all_files' property.\"],\"reason\":\"When the system needs to verify the existence of code files.\"},{\"description\":\"Set source path for the project\",\"inputs\":[\"path\"],\"outputs\":[\"ProjectRepo\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class sets the source path for the project by using the 'with_src_path' method with the specified 'path'.\"],\"reason\":\"When the system needs to update the source path for the project.\"}],\"relationship\":[\"The 'Retrieve project requirements' use case is related to the 'Check if code files exist' use case as both involve accessing project files and resources.\",\"The 'Set source path for the project' use case is related to the 'Check if code files exist' use case as setting the source path may impact the existence of code files.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:docs", "target": "{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:resources", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:resources", "target": "{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs", "target": "{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:tests", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:tests", "target": "{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists", "target": "{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path", "target": "{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/prompt.py", "target": "metagpt/roles/prompt.py:PromptString"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"package\":\"metagpt/roles/prompt.py:PromptString\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/prompt.py:PromptString", "target": "metagpt/roles/prompt.py:PromptString:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/qa_engineer.py", "target": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"package\":\"metagpt/roles/qa_engineer.py:QaEngineer\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"test_round\":{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]},\"test_round_allowed\":{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"lineno\":27,\"end_lineno\":181,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_round\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantConnection\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]},\"create_collection\":{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]},\"delete_collection\":{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]},\"has_collection\":{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"QdrantClient\"],\"aggregations\":[\"PointStruct\",\"VectorParams\",\"Filter\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:QdrantClient"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:PointStruct"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:VectorParams"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:Filter"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"QdrantClient\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_class_view.py", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"package\":\"metagpt/actions/rebuild_class_view.py:RebuildClassView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"lineno\":32,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "?:GraphRepository"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"parse_participant\":{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"lineno\":53,\"end_lineno\":397,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "?:GraphRepository"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant", "target": "{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/redis.py", "target": "metagpt/utils/redis.py:Redis"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"package\":\"metagpt/utils/redis.py:Redis\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}},\"methods\":{\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\"],\"aggregations\":[\"bytes\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:config"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:close"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:set"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/redis.py:Redis", "target": "?:bytes\\"}, {"predicate": "is_composite_of", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:_connect"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:Redis", "target": "{\"lineno\":19,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/redis.py:Redis", "target": "?:RedisConfig"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:config", "target": "{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:close", "target": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/redis_config.py", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"name\":\"RedisConfig\",\"package\":\"metagpt/configs/redis_config.py:RedisConfig\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]},\"password\":{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]},\"username\":{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}},\"methods\":{\"to_kwargs\":{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]},\"to_url\":{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:db"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:host"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:password"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:port"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:username"}, {"predicate": "has_class_method", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:to_url"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"lineno\":11,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RedisConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"name\":\"RedisConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"password\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"username\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:db", "target": "{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:host", "target": "{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:password", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:password", "target": "{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:port", "target": "{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:username", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:username", "target": "{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs", "target": "{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:to_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:to_url", "target": "{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"package\":\"metagpt/utils/repair_llm_raw_output.py:RepairType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:ReplyData\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"package\":\"metagpt/actions/invoice_ocr.py:ReplyQuestion\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"lineno\":166,\"end_lineno\":189,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"package\":\"metagpt/document.py:Repo\",\"attributes\":{\"assets\":{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"codes\":{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"docs\":{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"eda\":{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]},\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]},\"get_text_documents\":{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}},\"compositions\":[\"Document\",\"Path\"],\"aggregations\":[\"RepoMetadata\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:assets"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:codes"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:eda"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get_text_documents"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:set"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:to_path"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Repo", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Repo", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/document.py:Repo", "target": "?:RepoMetadata"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_set"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Repo", "target": "{\"lineno\":171,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"assets\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"codes\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:assets", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:assets", "target": "{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:codes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:codes", "target": "{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:docs", "target": "{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:eda", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:eda", "target": "{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get_text_documents", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:get_text_documents", "target": "{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:to_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:to_path", "target": "{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"package\":\"metagpt/repo_parser.py:RepoFileInfo\",\"attributes\":{\"classes\":{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]},\"file\":{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]},\"functions\":{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]},\"globals\":{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]},\"page_info\":{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"classes\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"functions\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"globals\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"page_info\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"package\":\"metagpt/document.py:RepoMetadata\",\"attributes\":{\"n_chars\":{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]},\"n_docs\":{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"symbols\":{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_chars"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:symbols"}, {"predicate": "has_page_info", "source": "metagpt/document.py:RepoMetadata", "target": "{\"lineno\":164,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"n_chars\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_docs\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"symbols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"package\":\"metagpt/repo_parser.py:RepoParser\",\"attributes\":{\"base_directory\":{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"extract_class_and_function_info\":{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]},\"generate_dataframe_structure\":{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]},\"generate_json_structure\":{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]},\"generate_structure\":{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]},\"generate_symbols\":{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]},\"node_to_str\":{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]},\"rebuild_class_views\":{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"RepoFileInfo\",\"CodeBlockInfo\\\\\",\"str\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:RepoFileInfo"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:CodeBlockInfo\\"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:str\\"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"lineno\":267,\"end_lineno\":634,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"base_directory\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Report"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Researcher"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"package\":\"metagpt/roles/researcher.py:Report\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"links\":{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]},\"summaries\":{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"tuple\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:content"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:links"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:summaries"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:topic"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/researcher.py:Report", "target": "?:tuple"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Report", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"links\",\"visibility\":\"+\",\"value_type\":\"Optional[dict[str,list[str]]]\",\"default_value\":\"\"},{\"name\":\"summaries\",\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str,str]]]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:links", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:links", "target": "{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"package\":\"metagpt/roles/researcher.py:Researcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"research_system_text\":{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]},\"write_report\":{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\",\"Action\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:react"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:write_report"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "?:Action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"name\":\"ResourceFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:ResourceFileRepositories\",\"attributes\":{\"api_spec_and_task\":{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"competitive_analysis\":{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]},\"data_api_design\":{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"sd_output\":{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]},\"seq_flow\":{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"lineno\":63,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResourceFileRepositories\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"name\":\"ResourceFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_spec_and_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"competitive_analysis\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"data_api_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_output\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"seq_flow\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"description\":\"The source code defines a class ResourceFileRepositories that extends FileRepository and initializes multiple file repositories for different types of resources.\",\"use_cases\":[{\"description\":\"Create Resource File Repositories\",\"inputs\":[\"git_repo\"],\"outputs\":[\"competitive_analysis\",\"data_api_design\",\"seq_flow\",\"system_design\",\"prd\",\"api_spec_and_task\",\"code_summary\",\"sd_output\",\"code_plan_and_change\",\"graph_repo\"],\"actors\":[\"System\"],\"steps\":[\"Initialize a new instance of ResourceFileRepositories with a git repository\",\"Create file repositories for competitive analysis, data API design, sequence flow, system design, PRD, API spec and task, code summary, SD output, code plan and change, and graph repository\"],\"reason\":\"The system needs to manage and organize different types of resource files in a git repository\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task", "target": "{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change", "target": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary", "target": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis", "target": "{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design", "target": "{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo", "target": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd", "target": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output", "target": "{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow", "target": "{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design", "target": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"usage\":{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Embedding\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "is_composite_of", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"lineno\":34,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"List[Embedding]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "?:Embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"package\":\"metagpt/learn/skill_loader.py:Returns\",\"attributes\":{\"format\":{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:format"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:type"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"format\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"name\":\"ReviewMode\",\"package\":\"metagpt/actions/action_node.py:ReviewMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "metagpt/actions/action_node.py:ReviewMode:name"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"name\":\"ReviewMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviewMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviewMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"name\":\"ReviseMode\",\"package\":\"metagpt/actions/action_node.py:ReviseMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "metagpt/actions/action_node.py:ReviseMode:name"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"lineno\":31,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviseMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"name\":\"ReviseMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviseMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviseMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleReactMode"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"package\":\"metagpt/roles/role.py:Role\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"actions\":{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]},\"addresses\":{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"is_human\":{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"latest_observed_msg\":{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"project_repo\":{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]},\"recovered\":{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"states\":{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]},\"check_addresses\":{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]},\"get_memories\":{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]},\"is_watch\":{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]},\"put_message\":{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]},\"pydantic_rebuild_model\":{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]},\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"set_action\":{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]},\"set_actions\":{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]},\"set_env\":{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]},\"set_todo\":{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}},\"compositions\":[\"Action\",\"SerializeAsAny\",\"Message\"],\"aggregations\":[\"ActionOutput\",\"Message\\\\\",\"Type\",\"Environment\"]}"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:action_description"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:actions"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:addresses"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:desc"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:git_repo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_human"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_name"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_path"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_repo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:recovered"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:role_id"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:src_workspace"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:states"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:todo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:check_addresses"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:get_memories"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:put_message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:pydantic_rebuild_model"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:react"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:run"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_action"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_addresses"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_env"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_todo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:think"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:ActionOutput"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Message\\"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Type"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Environment"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:Role", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_reset"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_setting"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_check_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_init_action"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_react_mode"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_state"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_get_prefix"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_observe"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_react"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act_by_order"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_plan_and_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:Role", "target": "{\"lineno\":121,\"end_lineno\":556,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"actions\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]]\",\"default_value\":\"\"},{\"name\":\"addresses\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_human\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"states\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:Action"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:Message"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/role.py:Role", "target": "{\"description\":\"This source code defines a Role class that represents a role or agent in a system. The Role class contains methods for setting actions, thinking, acting, observing, and reacting to messages. It also includes properties for managing the role's state and environment.\",\"use_cases\":[{\"description\":\"Set action to do and update context\",\"inputs\":[\"value\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the value is not None\",\"If the value is not None, set the value as the action to do and update the context\"],\"reason\":\"This use case is executed when the system needs to set an action for the role to perform and update the context.\"},{\"description\":\"Add actions to the role\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Reset the role's states and actions\",\"Iterate through the list of actions\",\"Initialize each action if it is not already initialized\",\"Set the long-term memory (llm) and prefix for each action\",\"Add the action to the role's list of actions\",\"Update the role's states with the action descriptions\"],\"reason\":\"This use case is executed when the system needs to add multiple actions to the role and update its states and long-term memory.\"},{\"description\":\"Set the strategy of the role reacting to observed messages\",\"inputs\":[\"react_mode\",\"max_react_loop\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the react_mode is valid\",\"Set the role's react mode and maximum react loop based on the inputs\"],\"reason\":\"This use case is executed when the system needs to set the strategy for the role's reaction to observed messages.\"},{\"description\":\"Watch actions of interest\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Set the role to watch messages caused by the specified actions\"],\"reason\":\"This use case is executed when the system needs the role to watch specific actions of interest.\"},{\"description\":\"Observe, think, and act based on the results of the observation\",\"inputs\":[\"with_message\"],\"outputs\":[\"rsp\"],\"actors\":[\"Role\"],\"steps\":[\"If a message is provided, place the message into the role's private message buffer\",\"If there is no new information, suspend and wait\",\"Observe new messages and filter out messages of interest\",\"React to the observed messages and get the response message\",\"Reset the next action to be taken\",\"Publish the response message to the environment\"],\"reason\":\"This use case is executed when the role needs to observe, think, and act based on the results of the observation.\"}],\"relationship\":[\"The 'Set action to do and update context' use case is related to the 'Add actions to the role' use case as it involves updating the role's context and actions.\",\"The 'Set the strategy of the role reacting to observed messages' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it determines the strategy for the role's reaction to observed messages.\",\"The 'Watch actions of interest' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it involves watching specific actions of interest during the observation process.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/role.py:Role", "target": "\nsequenceDiagram\n participant Role\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:action_description", "target": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:actions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:actions", "target": "{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:addresses", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:addresses", "target": "{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:git_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_human", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_human", "target": "{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_idle", "target": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_repo", "target": "{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:rc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:rc", "target": "{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:recovered", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:recovered", "target": "{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:role_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:role_id", "target": "{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:states", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:states", "target": "{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:todo", "target": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:act", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:act", "target": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:check_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:check_addresses", "target": "{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:get_memories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:get_memories", "target": "{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_watch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_watch", "target": "{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:put_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:put_message", "target": "{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:pydantic_rebuild_model", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:pydantic_rebuild_model", "target": "{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_action", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_action", "target": "{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_actions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_actions", "target": "{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_addresses", "target": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_env", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_env", "target": "{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_todo", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_todo", "target": "{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:think", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:think", "target": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"package\":\"metagpt/roles/role.py:RoleContext\",\"attributes\":{\"env\":{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"important_memory\":{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]},\"max_react_loop\":{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_buffer\":{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]},\"news\":{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]},\"react_mode\":{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]},\"state\":{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]},\"watch\":{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}},\"methods\":{\"check\":{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check(role_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"Type\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:env"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:history"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:important_memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:news"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:state"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:check"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "?:Type"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isAggregateOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"lineno\":83,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"important_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"visibility\":\"+\",\"value_type\":\"list[Type[Message]]\",\"default_value\":\"\"},{\"name\":\"react_mode\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:env", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:env", "target": "{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:history", "target": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:news", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:news", "target": "{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:state", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:state", "target": "{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:check", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:check", "target": "{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check(role_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"package\":\"metagpt/roles/role.py:RoleReactMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"values\":{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:name"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:values"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"lineno\":73,\"end_lineno\":80,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/run_code.py", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"package\":\"metagpt/actions/run_code.py:RunCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]},\"run_script\":{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]},\"run_text\":{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"RunCodeResult\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_script"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_text"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "?:RunCodeResult"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_requirements"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_pytest"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"lineno\":78,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"package\":\"metagpt/schema.py:RunCodeContext\",\"attributes\":{\"additional_python_paths\":{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]},\"code_filename\":{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]},\"command\":{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]},\"mode\":{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]},\"output\":{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]},\"output_filename\":{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]},\"test_code\":{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]},\"test_filename\":{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]},\"working_directory\":{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:command"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:mode"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:working_directory"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"lineno\":431,\"end_lineno\":441,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"additional_python_paths\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"code_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"command\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"mode\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"output\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"output_filename\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"working_directory\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"description\":\"The source code defines a class RunCodeContext which contains attributes related to running code such as mode, code, test code, command, working directory, additional python paths, output filename, and output.\",\"use_cases\":[{\"description\":\"Run code in script mode\",\"inputs\":[\"code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided code in script mode\",\"System generates an output after executing the code\"],\"reason\":\"When the user wants to execute a piece of code in script mode\"},{\"description\":\"Run code in test mode\",\"inputs\":[\"test_code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the test code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided test code\",\"System generates an output after executing the test code\"],\"reason\":\"When the user wants to execute a piece of code in test mode\"}],\"relationship\":[\"The 'Run code in script mode' use case is related to the 'Run code in test mode' use case as both involve running code with different purposes.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:RunCodeContext", "target": "\nsequenceDiagram\n participant User\n participant System\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:code", "target": "{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:command", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:command", "target": "{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:output", "target": "{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"package\":\"metagpt/schema.py:RunCodeResult\",\"attributes\":{\"stderr\":{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]},\"stdout\":{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]},\"summary\":{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stderr"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stdout"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:summary"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"lineno\":444,\"end_lineno\":447,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stderr\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"stdout\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/s3.py", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"package\":\"metagpt/utils/s3.py:S3\",\"attributes\":{\"auth_config\":{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"session\":{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}},\"methods\":{\"cache\":{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]},\"download_file\":{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]},\"get_object\":{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]},\"get_object_url\":{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]},\"upload_file\":{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}},\"compositions\":[\"Session\"],\"aggregations\":[\"bytes\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:auth_config"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:config"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:session"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:cache"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:download_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object_url"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:upload_file"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/s3.py:S3", "target": "?:Session"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/s3.py:S3", "target": "?:bytes"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:S3", "target": "{\"lineno\":16,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auth_config\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"visibility\":\"+\",\"value_type\":\"Session\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:session", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:session", "target": "{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:cache", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:cache", "target": "{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:download_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:download_file", "target": "{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:get_object", "target": "{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/s3_config.py", "target": "metagpt/configs/s3_config.py:S3Config"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"name\":\"S3Config\",\"package\":\"metagpt/configs/s3_config.py:S3Config\",\"attributes\":{\"access_key\":{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]},\"bucket\":{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]},\"endpoint\":{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]},\"secret_key\":{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:access_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:bucket"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:endpoint"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:secret_key"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/s3.py:S3:config"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"name\":\"S3Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"access_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"bucket\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"endpoint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"secret_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:access_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:access_key", "target": "{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:bucket", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:bucket", "target": "{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:endpoint", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:endpoint", "target": "{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:secret_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:secret_key", "target": "{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"package\":\"metagpt/utils/graph_repository.py:SPO\",\"attributes\":{\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"predicate\":{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]},\"subject\":{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:object_"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:subject"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"lineno\":46,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"subject\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "{\"name\":\"SQVUseCase\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCase\",\"attributes\":{\"actors\":{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"inputs\":{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]},\"outputs\":{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"steps\":{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "{\"lineno\":38,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "{\"name\":\"SQVUseCase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"actors\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"outputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"steps\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors", "target": "{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs", "target": "{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs", "target": "{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason", "target": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps", "target": "{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "{\"name\":\"SQVUseCaseDetails\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]},\"use_cases\":{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}},\"methods\":{},\"compositions\":[\"SQVUseCase\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "{\"lineno\":47,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCaseDetails\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "{\"name\":\"SQVUseCaseDetails\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"use_cases\",\"visibility\":\"+\",\"value_type\":\"List[SQVUseCase]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "?:SQVUseCase"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship", "target": "{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases", "target": "{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sales.py", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"package\":\"metagpt/roles/sales.py:Sales\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:_set_store"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:Sales", "target": "{\"lineno\":19,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sales.py:Sales", "target": "?:BaseStore"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:store", "target": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/search_and_summarize.py", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"package\":\"metagpt/actions/search_and_summarize.py:SearchAndSummarize\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"SearchEngine\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func"}, {"predicate": "has_class_method", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "is_composite_of", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"lineno\":105,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:SearchEngine"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:SearchEngineType"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine", "target": "{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func", "target": "{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func", "target": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/search_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/search_config.py", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"name\":\"SearchConfig\",\"package\":\"metagpt/configs/search_config.py:SearchConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:api_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:cse_id"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"name\":\"SearchConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:cse_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:cse_id", "target": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SearchEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"Callable\",\"Coroutine\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:Coroutine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "isAggregateOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "is_composite_of", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"lineno\":31,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:SearchEngineType"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools", "target": ""}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"package\":\"metagpt/tools:SearchEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/tools:SearchEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/roles/searcher.py:Searcher:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools:SearchEngineType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/searcher.py", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"package\":\"metagpt/roles/searcher.py:Searcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"set_search_func\":{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:engine"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:set_search_func"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"lineno\":22,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:set_search_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:set_search_func", "target": "{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"executable_path\":{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"launch_args\":{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:WebPage\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"lineno\":22,\"end_lineno\":83,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"executable_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"package\":\"metagpt/schema.py:SerializationMixin\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"lineno\":60,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serpapi.py", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"package\":\"metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"params\":{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serpapi_api_key\":{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serpapi_api_key\":{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]},\"get_params\":{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "?:aiohttp.ClientSession"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"lineno\":16,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key", "target": "{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key", "target": "{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serper.py", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"package\":\"metagpt/tools/search_engine_serper.py:SerperWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serper_api_key\":{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serper_api_key\":{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]},\"get_headers\":{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]},\"get_payloads\":{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "?:aiohttp.ClientSession"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"lineno\":17,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key", "target": "{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key", "target": "{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"package\":\"metagpt/schema.py:SimpleMessage\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:role"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"lineno\":122,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:role", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage:role", "target": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/singleton.py", "target": "metagpt/utils/singleton.py:Singleton"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"package\":\"metagpt/utils/singleton.py:Singleton\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/singleton.py:Singleton", "target": "metagpt/utils/singleton.py:Singleton:__call__"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sk_agent.py", "target": "metagpt/roles/sk_agent.py:SkAgent"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"package\":\"metagpt/roles/sk_agent.py:SkAgent\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"import_semantic_skill_from_directory\":{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]},\"import_skill\":{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]},\"kernel\":{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]},\"planner\":{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]},\"planner_cls\":{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Callable\",\"Kernel\",\"Plan\",\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Kernel"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Plan"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:ActionPlanner"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:BasicPlanner"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:SequentialPlanner"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"lineno\":26,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"import_skill\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"kernel\",\"visibility\":\"+\",\"value_type\":\"Kernel\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"Plan\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SkSearchEngine\",\"attributes\":{\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"lineno\":16,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"package\":\"metagpt/learn/skill_loader.py:Skill\",\"attributes\":{\"arguments\":{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"examples\":{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]},\"id\":{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]},\"returns\":{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]},\"x_prerequisite\":{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Example\",\"Parameter\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:examples"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:id"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arguments\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"examples\",\"visibility\":\"+\",\"value_type\":\"List[Example]\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,Parameter]]\",\"default_value\":\"\"},{\"name\":\"returns\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "?:Example"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "?:Parameter"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_method"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"package\":\"metagpt/actions/skill_action.py:SkillAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"find_and_call_function\":{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"lineno\":82,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/management/skill_manager.py", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"package\":\"metagpt/management/skill_manager.py:SkillManager\",\"attributes\":{},\"methods\":{\"add_skill\":{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]},\"del_skill\":{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]},\"generate_skill_desc\":{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]},\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"retrieve_skill\":{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]},\"retrieve_skill_scored\":{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Skill\"]}"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"predicate": "isAggregateOf", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "?:Skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration\",\"attributes\":{\"components\":{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]},\"entities\":{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]},\"skillapi\":{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}},\"methods\":{\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"get_skill_list\":{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}},\"compositions\":[\"Components\",\"Entity\"],\"aggregations\":[\"Skill\",\"Context\",\"SkillsDeclaration\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Skill"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Context"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:SkillsDeclaration"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Path"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"lineno\":62,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"components\",\"visibility\":\"+\",\"value_type\":\"Optional[Components]\",\"default_value\":\"\"},{\"name\":\"entities\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Entity]\",\"default_value\":\"\"},{\"name\":\"skillapi\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Components"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Entity"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"package\":\"metagpt/provider/spark_api.py:SparkLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"lineno\":26,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"package\":\"metagpt/strategy/tot_schema.py:Strategy\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/subscription.py", "target": "metagpt/subscription.py:SubscriptionRunner"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"package\":\"metagpt/subscription.py:SubscriptionRunner\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]},\"subscribe\":{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]},\"unsubscribe\":{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"Role\",\"asyncio.Task\"],\"aggregations\":[\"Awaitable\",\"Message\",\"Callable\",\"AsyncGenerator\"]}"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:run"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"predicate": "isCompositeOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:asyncio.Task"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Awaitable"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Callable"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:AsyncGenerator"}, {"predicate": "is_composite_of", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"dict[Role,asyncio.Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Role"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/summarize_code.py", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"package\":\"metagpt/actions/summarize_code.py:SummarizeCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"summarize_code\":{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"lineno\":90,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"package\":\"metagpt/schema.py:SystemMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:SystemMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SystemMessage", "target": "{\"lineno\":316,\"end_lineno\":322,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"package\":\"metagpt/actions/talk_action.py:TalkAction\",\"attributes\":{\"aask_args\":{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]},\"agent_description\":{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]},\"history_summary\":{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"prompt_gpt4\":{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:agent_description"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:language"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"lineno\":17,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aask_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"agent_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"history_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_gpt4\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"package\":\"metagpt/actions/talk_action.py:TalkActionPrompt\",\"attributes\":{\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"FORMATION_LOOSE\":{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"lineno\":100,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task", "target": "{\"name\":\"Task\",\"package\":\"metagpt/actions/action_node.py:Task\",\"attributes\":{\"dependent_task_ids\":{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"task_id\":{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]},\"tool\":{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:dependent_task_ids"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:task_id"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:tool"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:Task", "target": "{\"lineno\":673,\"end_lineno\":677,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Task\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:Task", "target": "{\"name\":\"Task\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dependent_task_ids\",\"visibility\":\"+\",\"value_type\":\"List[int]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"tool\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:dependent_task_ids", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:dependent_task_ids", "target": "{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:task_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:task_id", "target": "{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:tool", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:tool", "target": "{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Tasks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Tasks", "target": "{\"name\":\"Tasks\",\"package\":\"metagpt/actions/action_node.py:Tasks\",\"attributes\":{\"tasks\":{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}},\"methods\":{},\"compositions\":[\"Task\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Tasks", "target": "metagpt/actions/action_node.py:Tasks:tasks"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action_node.py:Tasks", "target": "metagpt/actions/action_node.py:Task"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:Tasks", "target": "{\"lineno\":680,\"end_lineno\":681,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Tasks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:Tasks", "target": "{\"name\":\"Tasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"List[Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:Tasks", "target": "?:Task"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Tasks:tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Tasks:tasks", "target": "{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/teacher.py", "target": "metagpt/roles/teacher.py:Teacher"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"package\":\"metagpt/roles/teacher.py:Teacher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"course_title\":{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"new_file_name\":{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:constraints"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:course_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:save"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_react"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"lineno\":22,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"course_title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"package\":\"metagpt/actions/write_teaching_plan.py:TeachingPlanBlock\",\"attributes\":{\"COURSE_TITLE\":{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]},\"DATA_BEGIN_TAG\":{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]},\"DATA_END_TAG\":{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]},\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"PROMPT_TEMPLATE\":{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]},\"PROMPT_TITLE_TEMPLATE\":{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]},\"TOPICS\":{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]},\"TOPIC_STATEMENTS\":{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"lineno\":92,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/team.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/team.py", "target": "metagpt/team.py:Team"}, {"predicate": "is", "source": "metagpt/team.py:Team", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"package\":\"metagpt/team.py:Team\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"env\":{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]},\"idea\":{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]},\"investment\":{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"deserialize\":{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]},\"hire\":{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]},\"invest\":{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]},\"run_project\":{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]},\"serialize\":{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]},\"start_project\":{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}},\"compositions\":[\"Environment\"],\"aggregations\":[\"Team\",\"Context\",\"Path\",\"Role\"]}"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:env"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:idea"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:investment"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:model_config"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:deserialize"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:hire"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:invest"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run_project"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:serialize"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:start_project"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Team"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Context"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Role"}, {"predicate": "is_composite_of", "source": "metagpt/team.py:Team", "target": "metagpt/environment.py:Environment"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:__init__"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_check_balance"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_save"}, {"predicate": "has_page_info", "source": "metagpt/team.py:Team", "target": "{\"lineno\":32,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"Optional[Environment]\",\"default_value\":\"\"},{\"name\":\"idea\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"investment\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/team.py:Team", "target": "?:Environment"}, {"predicate": "has_class_use_case", "source": "metagpt/team.py:Team", "target": "{\"description\":\"The source code defines a Team class that represents a team of agents working on a project. The team can hire roles, invest in the project, run and start a project, and run the company for a specified number of rounds.\",\"use_cases\":[{\"description\":\"Hire roles to cooperate\",\"inputs\":[\"roles\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team hires roles to cooperate on the project.\"],\"reason\":\"When the team needs to add new roles to the project.\"},{\"description\":\"Invest company\",\"inputs\":[\"investment\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team invests in the company.\",\"If the investment exceeds the maximum budget, a NoMoneyException is raised.\"],\"reason\":\"When the team needs to invest in the company.\"},{\"description\":\"Run a project from publishing user requirement\",\"inputs\":[\"idea\",\"send_to\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team runs a project based on the user's requirement.\",\"The idea is published to the team's environment for further processing.\"],\"reason\":\"When the team needs to start a new project based on user requirements.\"},{\"description\":\"Run company until target round or no money\",\"inputs\":[\"n_round\",\"idea\",\"send_to\",\"auto_archive\"],\"outputs\":[\"history\"],\"actors\":[\"Team\"],\"steps\":[\"The team runs the company for a specified number of rounds.\",\"If an idea is provided, it is used to run a project.\",\"The company is run until the target round is reached or there is no money left.\",\"The environment is archived if auto_archive is set to true.\"],\"reason\":\"When the team needs to run the company for a specified number of rounds.\"}],\"relationship\":[\"The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\",\"The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/team.py:Team", "target": "\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n\n Note right of Team: The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\n Note right of Team: The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\n"}, {"predicate": "is", "source": "metagpt/team.py:Team:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:cost_manager", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:env", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:env", "target": "{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:idea", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:idea", "target": "{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:investment", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:investment", "target": "{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:deserialize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:deserialize", "target": "{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:hire", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:hire", "target": "{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:invest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:invest", "target": "{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:run_project", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:run_project", "target": "{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:serialize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:serialize", "target": "{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:start_project", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:start_project", "target": "{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"package\":\"metagpt/schema.py:TestingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"test_doc\":{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:test_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:TestingContext", "target": "?:Document"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:TestingContext", "target": "{\"lineno\":425,\"end_lineno\":428,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:TestingContext", "target": "{\"description\":\"This source code defines a TestingContext class that contains a filename, code document, and an optional test document. The TestingContext is a subclass of BaseContext.\",\"use_cases\":[{\"description\":\"Create a new testing context\",\"inputs\":[\"filename\",\"code_doc\"],\"outputs\":[\"testing_context\"],\"actors\":[\"Tester\"],\"steps\":[\"The Tester provides a filename and a code document to the system\",\"The system creates a new TestingContext object with the provided filename and code document\",\"The system returns the created TestingContext object\"],\"reason\":\"When a Tester needs to create a new testing context for a specific code document\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:TestingContext", "target": "\nsequenceDiagram\n participant Tester\n participant System\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"package\":\"metagpt/strategy/base.py:ThoughtNode\",\"attributes\":{\"id\":{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"valid_status\":{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]},\"value\":{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}},\"methods\":{\"update_valid_status\":{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]},\"update_value\":{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:id"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:name"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:value"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"valid_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"value\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"package\":\"metagpt/strategy/tot.py:ThoughtSolverBase\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}},\"methods\":{\"evaluate_node\":{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]},\"generate_thoughts\":{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"select_nodes\":{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]},\"update_solution\":{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}},\"compositions\":[\"ThoughtTree\"],\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "?:ThoughtNode"}, {"predicate": "is_composite_of", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "?:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"package\":\"metagpt/strategy/tot_schema.py:ThoughtSolverConfig\",\"attributes\":{\"evaluator\":{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]},\"max_steps\":{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]},\"method_select\":{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]},\"n_generate_sample\":{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]},\"n_select_sample\":{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]},\"n_solution_sample\":{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]},\"parser\":{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"evaluator\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"method_select\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"parser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"package\":\"metagpt/strategy/base.py:ThoughtTree\",\"attributes\":{\"all_nodes\":{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}},\"methods\":{\"parse_node_path\":{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]},\"show\":{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]},\"update_node\":{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}},\"compositions\":[],\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:show"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "?:ThoughtNode"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_nodes\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"name\":\"TokenCostManager\",\"package\":\"metagpt/utils/cost_manager.py:TokenCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}},\"methods\":{\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_cost_manager"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"lineno\":85,\"end_lineno\":99,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TokenCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"name\":\"TokenCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ToolUse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ToolUse", "target": "{\"name\":\"ToolUse\",\"package\":\"metagpt/actions/action_node.py:ToolUse\",\"attributes\":{\"tool_name\":{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ToolUse", "target": "metagpt/actions/action_node.py:ToolUse:tool_name"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ToolUse", "target": "metagpt/actions/action_node.py:Task"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action_node.py:ToolUse", "target": "metagpt/actions/action_node.py:Task:tool"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ToolUse", "target": "{\"lineno\":669,\"end_lineno\":670,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolUse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ToolUse", "target": "{\"name\":\"ToolUse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tool_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ToolUse:tool_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ToolUse:tool_name", "target": "{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/translator.py", "target": "metagpt/tools/translator.py:Translator"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"package\":\"metagpt/tools/translator.py:Translator\",\"attributes\":{},\"methods\":{\"translate_prompt\":{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/translator.py:Translator", "target": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:Translator", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"package\":\"metagpt/strategy/tot.py:TreeofThought\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"solver\":{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/tutorial_assistant.py", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"package\":\"metagpt/roles/tutorial_assistant.py:TutorialAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"main_title\":{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]},\"total_content\":{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"main_title\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"total_content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"name\":\"UMLClassAttribute\",\"package\":\"metagpt/schema.py:UMLClassAttribute\",\"attributes\":{\"default_value\":{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]},\"value_type\":{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:default_value"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:value_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"lineno\":516,\"end_lineno\":536,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"name\":\"UMLClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"default_value\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"value_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:default_value", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:default_value", "target": "{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:value_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:value_type", "target": "{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"name\":\"UMLClassMeta\",\"package\":\"metagpt/schema.py:UMLClassMeta\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"visibility\":{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}},\"methods\":{\"name_to_visibility\":{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:name"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:visibility"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:name_to_visibility"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"lineno\":501,\"end_lineno\":513,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMeta\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"name\":\"UMLClassMeta\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"visibility\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:visibility", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:visibility", "target": "{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:name_to_visibility", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:name_to_visibility", "target": "{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"name\":\"UMLClassMethod\",\"package\":\"metagpt/schema.py:UMLClassMethod\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"return_type\":{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassAttribute\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:return_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"lineno\":539,\"end_lineno\":553,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"name\":\"UMLClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"return_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassMethod", "target": "?:UMLClassAttribute"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:args", "target": "{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:return_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:return_type", "target": "{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView", "target": "{\"name\":\"UMLClassView\",\"package\":\"metagpt/schema.py:UMLClassView\",\"attributes\":{\"attributes\":{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"methods\":{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]},\"load_dot_class_info\":{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}},\"compositions\":[\"UMLClassAttribute\",\"UMLClassMethod\"],\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:attributes"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:methods"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:get_mermaid"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:load_dot_class_info"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassView"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:DotClassInfo"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassMethod"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassView", "target": "{\"lineno\":556,\"end_lineno\":583,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassView", "target": "{\"name\":\"UMLClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassMethod]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassMethod"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:attributes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:attributes", "target": "{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:methods", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:methods", "target": "{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:load_dot_class_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:load_dot_class_info", "target": "{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/ut_writer.py", "target": "metagpt/tools/ut_writer.py:UTGenerator"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"package\":\"metagpt/tools/ut_writer.py:UTGenerator\",\"attributes\":{\"chatgpt_method\":{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]},\"icl_sample\":{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]},\"questions_path\":{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]},\"swagger_file\":{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]},\"template_prefix\":{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]},\"ut_py_path\":{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}},\"methods\":{\"ask_gpt_and_save\":{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]},\"build_api_doc\":{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]},\"build_object_properties\":{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]},\"generate_ut\":{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]},\"get_swagger_json\":{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]},\"get_tags_mapping\":{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]},\"gpt_msgs_to_code\":{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]},\"para_to_str\":{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"lineno\":104,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chatgpt_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"questions_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Usage\",\"attributes\":{\"prompt_tokens\":{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]},\"total_tokens\":{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"package\":\"metagpt/schema.py:UserMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:UserMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UserMessage", "target": "{\"lineno\":307,\"end_lineno\":313,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/add_requirement.py", "target": "metagpt/actions/add_requirement.py:UserRequirement"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"package\":\"metagpt/actions/add_requirement.py:UserRequirement\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message"}, {"predicate": "isAggregateOn", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"name\":\"VisualDiGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo\",\"attributes\":{},\"methods\":{\"get_mermaid_class_view\":{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]},\"get_mermaid_sequence_views\":{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"lineno\":59,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualDiGraphRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"name\":\"VisualDiGraphRepo\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view", "target": "{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views", "target": "{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from", "target": "{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"name\":\"VisualGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualGraphRepo\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualGraphRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"name\":\"VisualGraphRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient\",\"attributes\":{},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"lineno\":94,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"package\":\"metagpt/actions/research.py:WebBrowseAndSummarize\",\"attributes\":{\"browse_func\":{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"web_browser_engine\":{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"WebBrowserEngine\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "?:Callable"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"lineno\":174,\"end_lineno\":237,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browse_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "?:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine.py", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"package\":\"metagpt/tools/web_browser_engine.py:WebBrowserEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}},\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:Coroutine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:WebPage\\"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:\\"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "is_composite_of", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:WebPage"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"package\":\"metagpt/tools:WebBrowserEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools:WebBrowserEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/configs/browser_config.py:BrowserConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "isAggregateOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:get_html_content"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:_get_soup"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"package\":\"metagpt/utils/parse_html.py:WebPage\",\"attributes\":{\"html\":{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]},\"inner_text\":{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]},\"soup\":{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]},\"title\":{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{\"get_links\":{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}},\"compositions\":[],\"aggregations\":[\"Generator\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:html"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:soup"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:title"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:url"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/parse_html.py:WebPage", "target": "?:Generator"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"html\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inner_text\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"soup\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:WikiHowTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/workspace_config.py", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"name\":\"WorkspaceConfig\",\"package\":\"metagpt/configs/workspace_config.py:WorkspaceConfig\",\"attributes\":{\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"uid\":{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]},\"use_uid\":{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}},\"methods\":{\"check_uid_and_update_path\":{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]},\"check_workspace_path\":{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:path"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid"}, {"predicate": "has_class_method", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path"}, {"predicate": "has_class_method", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/config2.py:Config:workspace"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"lineno\":18,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WorkspaceConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"name\":\"WorkspaceConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"uid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_uid\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid", "target": "{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid", "target": "{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path", "target": "{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path", "target": "{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code.py", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"package\":\"metagpt/actions/write_code.py:WriteCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_codes\":{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"ProjectRepo\",\"Document\",\"CodingContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:ProjectRepo"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:CodingContext"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"lineno\":87,\"end_lineno\":219,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"predicate": "has_function", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:main"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"package\":\"metagpt/actions/write_code_an_draft.py:WriteCodeAN\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"lineno\":576,\"end_lineno\":581,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"name\":\"WriteCodePlanAndChange\",\"package\":\"metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_old_codes\":{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"lineno\":185,\"end_lineno\":210,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodePlanAndChange\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"name\":\"WriteCodePlanAndChange\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes", "target": "{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_review.py", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"package\":\"metagpt/actions/write_code_review.py:WriteCodeReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code_review_and_rewrite\":{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "?:CodingContext"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"lineno\":121,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteContent"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"package\":\"metagpt/actions/write_tutorial.py:WriteContent\",\"attributes\":{\"directory\":{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"directory\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api.py", "target": "metagpt/actions/design_api.py:WriteDesign"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"package\":\"metagpt/actions/design_api.py:WriteDesign\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"lineno\":39,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"description\":\"The source code defines a class `WriteDesign` that represents an action to generate system design based on PRD and design documents. It includes methods to update system design, merge PRD and system design, save data API design, and save sequence flow.\",\"use_cases\":[{\"description\":\"Generate system design based on PRD and design documents\",\"inputs\":[\"with_messages\",\"schema\"],\"outputs\":[\"content\",\"instruct_content\"],\"actors\":[\"Message\"],\"steps\":[\"Identify which PRD documents and design documents have been modified\",\"Regenerate the design content for the modified documents\",\"Wait for all files to be processed before sending the publish message\"],\"reason\":\"When there are changes in PRD and design documents, the system needs to generate the corresponding system design.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "\nsequenceDiagram\n participant Action\n participant Message\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n\n"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"package\":\"metagpt/actions/write_tutorial.py:WriteDirectory\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"predicate": "has_function", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"package\":\"metagpt/actions/write_docstring.py:WriteDocstring\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]},\"write_docstring\":{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:i_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd.py", "target": "metagpt/actions/write_prd.py:WritePRD"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"package\":\"metagpt/actions/write_prd.py:WritePRD\",\"attributes\":{\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}},\"methods\":{\"get_related_docs\":{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Document\",\"Message\",\"ActionOutput\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:project_name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:get_related_docs"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:ActionOutput\\"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_related"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"lineno\":61,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:get_related_docs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:get_related_docs", "target": "{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd_review.py", "target": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"package\":\"metagpt/actions/write_prd_review.py:WritePRDReview\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]},\"prd_review_prompt_template\":{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_review.py", "target": "metagpt/actions/write_review.py:WriteReview"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"package\":\"metagpt/actions/write_review.py:WriteReview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/project_management.py", "target": "metagpt/actions/project_management.py:WriteTasks"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"package\":\"metagpt/actions/project_management.py:WriteTasks\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"lineno\":32,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"description\":\"The source code defines a class 'WriteTasks' that is responsible for creating and updating tasks based on changes in system designs and task files. It also handles merging and updating requirements related to the tasks.\",\"use_cases\":[{\"description\":\"Create and update tasks based on changes in system designs and task files\",\"inputs\":[\"changed_system_designs\",\"changed_tasks\"],\"outputs\":[\"change_files\"],\"actors\":[\"WriteTasks\"],\"steps\":[\"Identify the system designs and task files that have undergone changes\",\"Update the system designs and task files\",\"Merge the updated system designs and task files\",\"Update the requirements related to the tasks\"],\"reason\":\"When there are changes in the system designs or task files, the system needs to create and update tasks accordingly.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "\nsequenceDiagram\n participant WriteTasks\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"package\":\"metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{\"format_value\":{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Context\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "?:Context"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"lineno\":15,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_test.py", "target": "metagpt/actions/write_test.py:WriteTest"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"package\":\"metagpt/actions/write_test.py:WriteTest\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}},\"compositions\":[\"TestingContext\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"lineno\":40,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "?:TestingContext"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "{\"name\":\"WsParam\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}},\"methods\":{\"create_url\":{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "{\"name\":\"WsParam\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/yaml_model.py", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_class", "source": "metagpt/utils/yaml_model.py", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"name\":\"YamlModel\",\"package\":\"metagpt/utils/yaml_model.py:YamlModel\",\"attributes\":{\"extra_fields\":{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}},\"methods\":{\"from_yaml_file\":{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]},\"read_yaml\":{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]},\"to_yaml_file\":{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:extra_fields"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:read_yaml"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "?:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"lineno\":15,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"name\":\"YamlModel\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"extra_fields\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,str]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:extra_fields", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:extra_fields", "target": "{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file", "target": "{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:read_yaml", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:read_yaml", "target": "{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file", "target": "{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"name\":\"YamlModelWithoutDefault\",\"package\":\"metagpt/utils/yaml_model.py:YamlModelWithoutDefault\",\"attributes\":{},\"methods\":{\"check_not_default_config\":{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModelWithoutDefault\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"name\":\"YamlModelWithoutDefault\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config", "target": "{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuAILLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"lineno\":34,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuEvent\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"package\":\"metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI\",\"attributes\":{},\"methods\":{\"acreate\":{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]},\"acreate_stream\":{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]},\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]},\"split_zhipu_api_url\":{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"AsyncSSEClient\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "?:AsyncSSEClient"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"lineno\":14,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate", "target": "{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream", "target": "{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "{\"name\":\"_AgentSkill\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "{\"name\":\"_AgentSkill\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"name\":\"_VisualClassView\",\"package\":\"metagpt/utils/visual_graph_repo.py:_VisualClassView\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"generalizations\":{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]},\"uml\":{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}},\"compositions\":[\"UMLClassView\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid"}, {"predicate": "is_composite_of", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/schema.py:UMLClassView"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"lineno\":25,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"_VisualClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"name\":\"_VisualClassView\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"generalizations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"uml\",\"visibility\":\"+\",\"value_type\":\"Optional[UMLClassView]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "?:UMLClassView"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations", "target": "{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package", "target": "{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml", "target": "{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:_split_literal", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:_parse_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:_parse_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_file", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_expr", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if_compare", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_variable", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_assign", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_classes", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_class_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_relationship_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_get_label", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_create_path_mapping", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_namespaces", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_ns", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_find_root", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:is_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:is_func", "target": "{\"lineno\":637,\"end_lineno\":638,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast.Constant:\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:subprocess", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pydantic", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['BaseModel', 'Field', 'field_validator']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['any_to_str', 'aread']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['handle_exception']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/startup.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/startup.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:generate_repo"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:startup"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:copy_config_to"}, {"predicate": "is", "source": "metagpt/startup.py:generate_repo", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:generate_repo", "target": "{\"lineno\":16,\"end_lineno\":68,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_repo\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:startup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:startup", "target": "{\"lineno\":72,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:copy_config_to", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:copy_config_to", "target": "{\"lineno\":121,\"end_lineno\":136,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"copy_config_to\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:app", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:app", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:asyncio", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:shutil", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:typer", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['config']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.const", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:__name__:__main__", "target": "{\"lineno\":139,\"end_lineno\":140,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222415604:{\nsequenceDiagram\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n```\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:User"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Typer"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222533217:{\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/context.py:Context"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222606110:{\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:str"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Path"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222711914:{\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222829147:{\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant DependencyFile\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/document.py:Document"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:Document"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:List"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:aiofiles"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:os"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:datetime"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:json"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222928045:{\nsequenceDiagram\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/dependency_file.py:DependencyFile"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223021143:{\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223126916:{\nsequenceDiagram\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:Message"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:AsyncOpenAI"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223231878:{\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:SystemAdministrator"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:LLMSystem"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223353735:{\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/team.py:Team"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223527497:{\nsequenceDiagram\n participant Role\n participant Team\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223701562:{\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/environment.py:Environment"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Iterable"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:SerializeAsAny"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223806039:{\nsequenceDiagram\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/product_manager.py:ProductManager"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223921365:{\nsequenceDiagram\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/architect.py:Architect"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:SourceCode"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224018623:{\nsequenceDiagram\n participant ProjectManager\n participant WriteTasks\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/project_manager.py:ProjectManager"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224133693:{\nsequenceDiagram\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/actions/project_management.py:WriteTasks"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224454452:{\nsequenceDiagram\n participant Action\n participant Message\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/actions/design_api.py:WriteDesign"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224643506:{\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224806732:{\nsequenceDiagram\n participant User\n participant System\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:System"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224922674:{\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant System\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:ExternalSystem"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225037718:{\nsequenceDiagram\n participant Tester\n participant System\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Tester"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225231661:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225403302:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/common.py:NoMoneyException"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Logger"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225530578:{\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Developer"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225710350:{\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:generate_repo"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:config"}, {"predicate": "has_sequence_view", "source": "metagpt/startup.py:__name__:__main__", "target": "\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225840129:{\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/engineer.py:Engineer"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:asyncio", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:pydantic", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.logs", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['logger']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.roles", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Role']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.schema", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Message']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:module:metagpt", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:names:['_compat as _']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/llm.py", "target": "metagpt/llm.py:LLM"}, {"predicate": "is", "source": "metagpt/llm.py:LLM", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:LLM", "target": "{\"lineno\":15,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['LLMConfig']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['BaseLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/config2.py:merge_dict", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:merge_dict", "target": "{\"lineno\":135,\"end_lineno\":140,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_dict\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/config2.py:config", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:config", "target": "{\"lineno\":143,\"end_lineno\":143,\"type_name\":\"ast.Assign\",\"tokens\":[\"config\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:ast.Constant:\n@Time : 2024/1/4 01:25\n@Author : alexanderwu\n@File : config2.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 01:25\\n@Author : alexanderwu\\n@File : config2.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['Dict', 'Iterable', 'List', 'Literal', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['BaseModel', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.browser_config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['BrowserConfig']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.mermaid_config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['MermaidConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.redis_config", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['RedisConfig']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.s3_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['S3Config']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.search_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['SearchConfig']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.workspace_config", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['WorkspaceConfig']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['YamlModel']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/team.py:Team:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:_check_balance", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:_save", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:warnings", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Any', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['UserRequirement']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.context", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Context']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.environment", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Environment']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Message']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__getattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__setattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__delattr__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/context.py:ast.Constant:\n@Time : 2024/1/4 16:32\n@Author : alexanderwu\n@File : context.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:32\\n@Author : alexanderwu\\n@File : context.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Any', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['BaseModel', 'ConfigDict']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['LLMConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['BaseLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['create_llm_instance']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['CostManager']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['GitRepository']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['ProjectRepo']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:define_log_level"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:log_llm_stream"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:set_llm_stream_logfunc"}, {"predicate": "is", "source": "metagpt/logs.py:define_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:define_log_level", "target": "{\"lineno\":18,\"end_lineno\":26,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:log_llm_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:log_llm_stream", "target": "{\"lineno\":32,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "{\"lineno\":36,\"end_lineno\":38,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:logger", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:_llm_stream_log", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:_llm_stream_log", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:sys", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:datetime", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['datetime']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['partial']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:loguru", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['logger as _logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['METAGPT_ROOT']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_set", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:validate_cols", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:validate_cols", "target": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document.py:read_data", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:read_data", "target": "{\"lineno\":31,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:enum", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Enum']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:pandas as pd", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.document_loaders", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.text_splitter", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['CharacterTextSplitter']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:tqdm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['tqdm']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:metagpt.repo_parser", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['RepoParser']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : environment.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n 1. Remove the functionality of `Environment` class as a public message buffer.\n 2. Standardize the message forwarding behavior of the `Environment` class.\n 3. Add the `is_idle` property.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":13,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : environment.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n 1. Remove the functionality of `Environment` class as a public message buffer.\\n 2. Standardize the message forwarding behavior of the `Environment` class.\\n 3. Add the `is_idle` property.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:asyncio", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Iterable', 'Set']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:pydantic", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.context", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Context']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.roles.role", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Role']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Message']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.utils.common", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_send_to\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['is_send_to']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_send_to\"]}}"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:platform", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:sys", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:warnings", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m", "target": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:ast.Constant:\n@Time : 2024/1/11 17:25\n@Author : alexanderwu\n@File : context_mixin.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/11 17:25\\n@Author : alexanderwu\\n@File : context_mixin.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.context", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Context']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/const.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/const.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_package_root"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_root"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_package_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_package_root", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_root", "target": "{\"lineno\":33,\"end_lineno\":43,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CONFIG_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CONFIG_ROOT", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:METAGPT_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:METAGPT_ROOT", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_PATH", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "{\"lineno\":53,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESEARCH_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESEARCH_PATH", "target": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PATH", "target": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SWAGGER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SWAGGER_PATH", "target": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PY_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PY_PATH", "target": "{\"lineno\":60,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERDESER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERDESER_PATH", "target": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TMP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TMP", "target": "{\"lineno\":65,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SOURCE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SOURCE_ROOT", "target": "{\"lineno\":67,\"end_lineno\":67,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PROMPT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PROMPT_PATH", "target": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "{\"lineno\":69,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MEM_TTL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MEM_TTL", "target": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "{\"lineno\":79,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "{\"lineno\":83,\"end_lineno\":83,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILENAME", "target": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "{\"lineno\":90,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO", "target": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO", "target": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"VISUAL_GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:YAPI_URL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:YAPI_URL", "target": "{\"lineno\":109,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_PATH", "target": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERPER_API_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERPER_API_KEY", "target": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BASE64_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BASE64_FORMAT", "target": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REDIS_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REDIS_KEY", "target": "{\"lineno\":123,\"end_lineno\":123,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "{\"lineno\":127,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GENERALIZATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GENERALIZATION", "target": "{\"lineno\":130,\"end_lineno\":130,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPOSITION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPOSITION", "target": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:AGGREGATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:AGGREGATION", "target": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:loguru", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:metagpt", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__init_subclass__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__setattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:__hash__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:T", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:T", "target": "{\"lineno\":407,\"end_lineno\":407,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:__future__", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['annotations']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:asyncio", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:json", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:os.path", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:uuid", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:abc", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['ABC']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:asyncio", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:json", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['JSONDecodeError']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Any', 'Dict', 'Iterable', 'List', 'Optional', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator', 'model_serializer', 'model_validator']", "target": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.const", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'PRDS_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.logs", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['logger']", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.repo_parser", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['DotClassInfo']", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.common", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['handle_exception']", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.serialize", "target": "{\"lineno\":53,\"end_lineno\":57,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']", "target": "{\"lineno\":53,\"end_lineno\":57,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_image.py", "target": "metagpt/learn/text_to_image.py:text_to_image"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "{\"lineno\":20,\"end_lineno\":44,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['Config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['LLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['S3']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/learn/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:__all__", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_image']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_speech']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.google_search", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['google_search']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/google_search.py", "target": "metagpt/learn/google_search.py:google_search"}, {"predicate": "is", "source": "metagpt/learn/google_search.py:google_search", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:google_search", "target": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:names:['SearchEngine']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_speech.py", "target": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "{\"lineno\":17,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['Config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['S3']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_embedding.py", "target": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['Config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:yaml", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:metagpt.context", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Context']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'overload']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:__name__:__main__", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:connexion", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['List']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:meilisearch", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['Index']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "{\"lineno\":75,\"end_lineno\":85,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:__name__:__main__", "target": "{\"lineno\":113,\"end_lineno\":116,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "{\"lineno\":98,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "{\"lineno\":105,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "{\"lineno\":131,\"end_lineno\":136,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "{\"lineno\":139,\"end_lineno\":139,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "{\"lineno\":140,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:asyncio", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:sys", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:importlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['sk_function']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.tools", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['SearchEngineType']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:importlib", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'overload']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.tools", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebPage']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:json", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:aiohttp", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:__name__:__main__", "target": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['BaseLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "{\"lineno\":21,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:module:enum", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:names:['Enum']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "{\"lineno\":120,\"end_lineno\":133,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:httplib2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:__name__:__main__", "target": "{\"lineno\":136,\"end_lineno\":139,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "{\"lineno\":101,\"end_lineno\":125,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:asyncio", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:importlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:copy", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['Literal']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['By']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.config2", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['config']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/openapi_v3_hello.py", "target": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:module:pathlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:names:['Path']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:connexion", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:__name__:__main__", "target": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "{\"lineno\":60,\"end_lineno\":100,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:uuid", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['uuid4']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "{\"lineno\":57,\"end_lineno\":67,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:requests", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "{\"lineno\":11,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "{\"lineno\":67,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "{\"lineno\":72,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "{\"lineno\":78,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:json", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.config2", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['config']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.utils.common", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['awrite']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:prompt", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:prompt", "target": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "{\"lineno\":85,\"end_lineno\":95,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "{\"lineno\":117,\"end_lineno\":143,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hashlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hmac", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:uuid", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:datetime", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['datetime']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:enum", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Enum']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:time", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['mktime']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:typing", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Optional']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:urllib.parse", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['urlencode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['format_date_time']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:aiofiles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:websockets as websockets", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pydantic", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['BaseModel']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:collections", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['defaultdict']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.utils.common", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.config2", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['config']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Redis']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:pathlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Path']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.embeddings", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FAISS']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Embeddings']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FaissStore']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Message']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/memory/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:__all__", "target": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:module:metagpt.memory.memory", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:names:['Memory']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Optional']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Memory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['RoleContext']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:dataclasses", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['dataclass']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['List']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['BaseStore']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:chromadb", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:shutil", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:lancedb", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:__all__", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:names:['FaissStore']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_write", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['FAISS']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Embeddings']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['LocalStore']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.utils.embedding", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['get_embedding']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_write", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:anthropic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:anthropic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['LLMConfig']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:google.generativeai as genai", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.ai", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['content_types']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types", "target": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']", "target": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:tenacity", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.logs", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['register_provider']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai._base_client", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['LLMType']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['register_provider']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:re", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types.chat", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['register_provider']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:requests", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['ConnectionError']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:tenacity", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.logs", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['BaseLLM']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['register_provider']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_and_reraise']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['TokenCostManager']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['FireworksLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['GeminiLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OllamaLLM']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenAILLM']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['MetaGPTLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.human_provider", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['HumanProvider']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.spark_api", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['SparkLLM']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_model", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_process_message", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "{\"lineno\":40,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai._base_client", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CompletionUsage']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types.chat", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:tenacity", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['BaseLLM']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.constant", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA', 'GENERAL_TOOL_CHOICE']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['register_provider']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.schema", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['Message']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['handle_exception']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":33,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']", "target": "{\"lineno\":33,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:_thread as thread", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:base64", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hashlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hmac", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ssl", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:time", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['mktime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:urllib.parse", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:wsgiref.handlers", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['format_date_time']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:websocket", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['register_provider']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:aiohttp", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:requests", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_user_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:json", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:abc", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:openai", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['AsyncOpenAI']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['LLMConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Message']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['CostManager']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:openai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:zhipuai", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:requests", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['register_provider']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_info", "target": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logger", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:os", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:platform", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:threading", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:time", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:contextlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:enum", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['Enum']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:urllib.parse", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:requests", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys.version_info", "target": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logging", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:openai", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:openai", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['version']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "{\"lineno\":24,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:create_llm_instance", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:create_llm_instance", "target": "{\"lineno\":34,\"end_lineno\":36,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_llm_instance\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['BaseLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['LLMType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['register_provider']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:openai.types", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.logs", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['logger']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['register_provider']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['Costs', 'TokenCostManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n", "target": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['LLMConfig']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.logs", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['logger']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['BaseLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:names:['Any', 'Iterator']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZhipuAI']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.core._http_client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZHIPUAI_DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:Skill", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:Skill", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.const", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['ChromaStore']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:__name__:__main__", "target": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_parse_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_write_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_is_pass", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_context", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_doc", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "{\"lineno\":52,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:__future__", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['annotations']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:json", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:os", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:collections", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['defaultdict']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Set']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['FixBug']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['REFINED_TASK_LIST', 'TASK_LIST']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.write_code_plan_and_change_an", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['WriteCodePlanAndChange']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.const", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.logs", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['logger']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.roles", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Role']", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.schema", "target": "{\"lineno\":42,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":42,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_observe", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_react", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['UserRequirement']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.roles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Role']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['any_to_str', 'awrite']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_observe", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['PrepareDocuments']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['Role']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.utils.common", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['any_to_name']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:_set_store", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['BaseStore']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.roles", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Role']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.tools", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act_sp", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_node", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionNode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_output", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionOutput']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.roles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Role']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.tools", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchEngineType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:_plan", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:enum", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Enum']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pathlib", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Path']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:typing", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Optional']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pydantic", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Field']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['TalkAction']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['SkillsDeclaration']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['BrainMemory']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.roles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Role']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.schema", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Message']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/roles/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.role", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Role']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.architect", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Architect']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProjectManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProductManager']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.engineer", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Engineer']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['QaEngineer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.searcher", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Searcher']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.sales", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Sales']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['CustomerService']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_reset", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_setting", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_check_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_init_action", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_react_mode", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_watch", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_state", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_get_prefix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_observe", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_react", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act_by_order", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_plan_and_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "{\"lineno\":45,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "{\"lineno\":62,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:__future__", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['annotations']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:enum", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Enum']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Any', 'Iterable', 'Optional', 'Set', 'Type', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.action_node", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ActionNode']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['UserRequirement']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.context_mixin", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ContextMixin']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.logs", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['logger']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.memory", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Memory']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.provider", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['HumanProvider']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.schema", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.common", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'role_raise_decorator']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ProjectRepo']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['extract_state_value_from_output']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n", "target": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WritePRD']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:DESC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:DESC", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['BaseStore']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.roles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Sales']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Field']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Kernel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ActionPlanner']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['UserRequirement']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ExecuteTask']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.roles", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Role']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Message']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PREFIX", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:datetime", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['datetime']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['File']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteTasks']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions.research", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['get_research_system_text']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.roles.role", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:__name__:__main__", "target": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:serialize_message"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:deserialize_message"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:serialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:serialize_message", "target": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:pickle", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:module:metagpt.utils.common", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:names:['import_class']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ast.Constant:\n@Time : 2024/1/8\n@Author : mashenquan\n@File : project_repo.py\n@Desc : Wrapper for GitRepository and FileRepository of project.\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/8\\n@Author : mashenquan\\n@File : project_repo.py\\n@Desc : Wrapper for GitRepository and FileRepository of project.\\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:__future__", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['annotations']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['CLASS_VIEW_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_PDF_FILE_REPO', 'CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DATA_API_DESIGN_FILE_REPO', 'DOCS_FILE_REPO', 'GRAPH_REPO_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME', 'RESOURCES_FILE_REPO', 'SD_OUTPUT_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO', 'VISUAL_GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['FileRepository']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['GitRepository']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_playwright.py", "target": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:urllib.parse", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['urljoin']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Set']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:aiofiles", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['aread']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['handle_exception']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/make_sk_kernel.py", "target": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:metagpt.config2", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['config']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_message_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_string_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "{\"lineno\":64,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "{\"lineno\":122,\"end_lineno\":138,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "{\"lineno\":141,\"end_lineno\":153,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "{\"lineno\":40,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://openai.com/pricing\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref5: https://ai.google.dev/models/gemini\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://openai.com/pricing\\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref5: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:tiktoken", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/embedding.py", "target": "metagpt/utils/embedding.py:get_embedding"}, {"predicate": "is", "source": "metagpt/utils/embedding.py:get_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:get_embedding", "target": "{\"lineno\":13,\"end_lineno\":16,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:ast.Constant:\n@Time : 2024/1/4 20:58\n@Author : alexanderwu\n@File : embedding.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 20:58\\n@Author : alexanderwu\\n@File : embedding.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:module:langchain_community.embeddings", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:names:['config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "{\"lineno\":108,\"end_lineno\":132,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "{\"lineno\":135,\"end_lineno\":146,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "{\"lineno\":149,\"end_lineno\":170,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "{\"lineno\":173,\"end_lineno\":220,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "{\"lineno\":223,\"end_lineno\":257,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "{\"lineno\":265,\"end_lineno\":279,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "{\"lineno\":282,\"end_lineno\":312,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "{\"lineno\":315,\"end_lineno\":328,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:enum", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:regex as re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mermaid.py", "target": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "{\"lineno\":19,\"end_lineno\":90,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC1", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC1", "target": "{\"lineno\":93,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC2", "target": "{\"lineno\":127,\"end_lineno\":145,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.utils.common", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['check_cmd_exists']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:__future__", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['annotations']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:typing", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:urllib.parse", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:bs4", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BeautifulSoup']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : visualize_graph.py\n@Desc : Visualize the graph.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : visualize_graph.py\\n@Desc : Visualize the graph.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:abc", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['ABC']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['List', 'Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.schema", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['UMLClassView']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.common", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['split_namespace']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['DiGraphRepository']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost_stream"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost", "target": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:aiohttp", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:aiohttp.client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:__all__", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.read_document", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['read_docx']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.singleton", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['Singleton']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_ink.py", "target": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:base64", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['List']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:networkx", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:ast.Constant:\n@Time : 2024/1/4 10:18\n@Author : alexanderwu\n@File : YamlModel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 10:18\\n@Author : alexanderwu\\n@File : YamlModel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['Dict', 'Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:yaml", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['BaseModel', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['NamedTuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:aiofiles", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "{\"lineno\":38,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:require_python_version", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:require_python_version", "target": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:print_members", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:print_members", "target": "{\"lineno\":319,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_recipient", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_recipient", "target": "{\"lineno\":338,\"end_lineno\":348,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:get_class_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:get_class_name", "target": "{\"lineno\":351,\"end_lineno\":353,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str", "target": "{\"lineno\":356,\"end_lineno\":363,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str_set", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str_set", "target": "{\"lineno\":366,\"end_lineno\":381,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:is_send_to", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:is_send_to", "target": "{\"lineno\":384,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_send_to\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_name", "target": "{\"lineno\":395,\"end_lineno\":403,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:concat_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:concat_namespace", "target": "{\"lineno\":406,\"end_lineno\":407,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:split_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:split_namespace", "target": "{\"lineno\":410,\"end_lineno\":411,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:general_after_log", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:general_after_log", "target": "{\"lineno\":414,\"end_lineno\":444,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_json_file", "target": "{\"lineno\":447,\"end_lineno\":456,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:write_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:write_json_file", "target": "{\"lineno\":459,\"end_lineno\":465,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class", "target": "{\"lineno\":468,\"end_lineno\":471,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class_inst", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class_inst", "target": "{\"lineno\":474,\"end_lineno\":477,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:format_trackback_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:format_trackback_info", "target": "{\"lineno\":480,\"end_lineno\":481,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:serialize_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:serialize_decorator", "target": "{\"lineno\":484,\"end_lineno\":495,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "{\"lineno\":498,\"end_lineno\":525,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:aread", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aread", "target": "{\"lineno\":529,\"end_lineno\":533,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:awrite", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:awrite", "target": "{\"lineno\":536,\"end_lineno\":541,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_file_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_file_block", "target": "{\"lineno\":544,\"end_lineno\":558,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:list_files", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:list_files", "target": "{\"lineno\":561,\"end_lineno\":575,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"list_files\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_json_code_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_json_code_block", "target": "{\"lineno\":578,\"end_lineno\":580,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_json_code_block\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:__future__", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['annotations']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:contextlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:importlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:inspect", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:os", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:platform", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:re", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:sys", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:traceback", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:typing", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Any', 'List', 'Tuple', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aiofiles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:loguru", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pydantic_core", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['to_jsonable_python']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:tenacity", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['RetryCallState', 'RetryError', '_utils']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.const", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.logs", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['logger']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['handle_exception']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:_connect", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:traceback", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:datetime", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['timedelta']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:aioredis", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.configs.redis_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['RedisConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:reduce_message_length"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:generate_prompt_chunk"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:split_paragraph"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:decode_unicode_escape"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_by_count"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_text_with_ends"}, {"predicate": "is", "source": "metagpt/utils/text.py:reduce_message_length", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:reduce_message_length", "target": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:split_paragraph", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:split_paragraph", "target": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_by_count", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_by_count", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:typing", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['Generator', 'Sequence']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:abc", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:collections", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['defaultdict']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['List']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['BaseModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['DotClassInfo', 'DotClassRelationship', 'RepoFileInfo']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['concat_namespace', 'split_namespace']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton:__call__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:aiofiles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Document']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['aread']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['json_to_markdown']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:_leave", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:_leave", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:has_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:has_decorator", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:typing", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Union']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:libcst as cst", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:libcst._nodes.module", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Module']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/exceptions.py", "target": "metagpt/utils/exceptions.py:handle_exception"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:asyncio", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:traceback", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['Any', 'Tuple', 'Type']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['BaseModel']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:metagpt.logs", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['logger']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:metagpt.utils.common", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['import_class']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/highlight.py", "target": "metagpt/utils/highlight.py:highlight"}, {"predicate": "is", "source": "metagpt/utils/highlight.py:highlight", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:highlight", "target": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['highlight as highlight_']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.formatters", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.lexers", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:base64", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:os.path", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:traceback", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:uuid", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aioboto3", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aiofiles", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['S3Config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.const", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/json_to_markdown.py", "target": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:json", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:re", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json.decoder", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:_init", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:shutil", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:enum", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Enum']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Dict', 'List']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Repo']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo.fun", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['is_git_dir']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:gitignore_parser", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['parse_gitignore']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['DependencyFile']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['FileRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/read_document.py", "target": "metagpt/utils/read_document.py:read_docx"}, {"predicate": "is", "source": "metagpt/utils/read_document.py:read_docx", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:read_docx", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:docx", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : s3_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : s3_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:names:['YamlModelWithoutDefault']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : browser_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : browser_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:metagpt.tools", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['YamlModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:ast.Constant:\n@Time : 2024/1/4 19:09\n@Author : alexanderwu\n@File : workspace_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:09\\n@Author : alexanderwu\\n@File : workspace_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['datetime']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:uuid", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['uuid4']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['field_validator', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['DEFAULT_WORKSPACE_ROOT']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['YamlModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : mermaid_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : mermaid_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:names:['Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:names:['YamlModel']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/configs/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/configs/__init__.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType:__missing__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : llm_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['field_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['YamlModel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : redis_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : redis_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:names:['YamlModelWithoutDefault']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : search_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : search_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:metagpt.tools", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['SearchEngineType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['YamlModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Rebuild class view info\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Rebuild class view info\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.config2", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['config']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['logger']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DotClassInfo', 'RepoParser']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['UMLClassView']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['concat_namespace', 'split_namespace']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Rebuild sequence view info\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Rebuild sequence view info\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:datetime", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['datetime']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['List', 'Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['BaseModel']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:tenacity", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Action']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config2", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['config']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['CodeBlockInfo', 'DotClassInfo']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.schema", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['UMLClassView']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.common", "target": "{\"lineno\":25,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['aread', 'concat_namespace', 'general_after_log', 'list_files', 'parse_json_code_block', 'read_file_block', 'split_namespace']", "target": "{\"lineno\":25,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['SPO', 'GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":36,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:tenacity", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Action']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['REFINED_TASK_LIST', 'TASK_LIST']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.write_code_plan_and_change_an", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['REFINED_TEMPLATE']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.const", "target": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.logs", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['logger']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.schema", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.common", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodeParser']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['ProjectRepo']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "python"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS", "target": "{\"lineno\":33,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS", "target": "{\"lineno\":55,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "{\"lineno\":67,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES", "target": "{\"lineno\":80,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "{\"lineno\":105,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "{\"lineno\":126,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS", "target": "{\"lineno\":133,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "{\"lineno\":142,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL", "target": "{\"lineno\":149,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "{\"lineno\":157,\"end_lineno\":162,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":164,\"end_lineno\":169,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "{\"lineno\":171,\"end_lineno\":176,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "{\"lineno\":178,\"end_lineno\":183,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "{\"lineno\":185,\"end_lineno\":187,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "{\"lineno\":190,\"end_lineno\":203,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_NODES", "target": "{\"lineno\":205,\"end_lineno\":218,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "{\"lineno\":220,\"end_lineno\":220,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE", "target": "{\"lineno\":221,\"end_lineno\":221,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "{\"lineno\":222,\"end_lineno\":222,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "{\"lineno\":223,\"end_lineno\":223,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":17,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "{\"lineno\":46,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:tenacity", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:get_research_system_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:get_research_system_text", "target": "{\"lineno\":268,\"end_lineno\":278,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "{\"lineno\":20,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "{\"lineno\":25,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "{\"lineno\":37,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":51,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "{\"lineno\":63,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Callable', 'Optional', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Field', 'parse_obj_as']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['SearchEngine']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['WebBrowserEngine', 'WebBrowserEngineType']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.common", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['OutputParser']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.text", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:importlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:traceback", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:copy", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['deepcopy']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Action']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Skill']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "{\"lineno\":20,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Field']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['CodeParser']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_new_system_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_update_system_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_STRUCTURES_AND_INTERFACES', 'DESIGN_API_NODE', 'PROGRAM_CALL_FLOW', 'REFINED_DATA_STRUCTURES_AND_INTERFACES', 'REFINED_DESIGN_NODE', 'REFINED_PROGRAM_CALL_FLOW']", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.const", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'SEQ_FLOW_FILE_REPO']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.schema", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['mermaid_to_file']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/design_api_an.py", "target": "metagpt/actions/design_api_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:main", "target": "{\"lineno\":114,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST", "target": "{\"lineno\":41,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":49,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":58,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW", "target": "{\"lineno\":76,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:NODES", "target": "{\"lineno\":93,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_NODES", "target": "{\"lineno\":102,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE", "target": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DESIGN_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:__name__:__main__", "target": "{\"lineno\":121,\"end_lineno\":122,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/action_outcls_registry.py", "target": "metagpt/actions/action_outcls_registry.py:register_action_outcls"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py:register_action_outcls", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:register_action_outcls", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_action_outcls\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py:action_outcls_registry", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:action_outcls_registry", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"action_outcls_registry\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:module:functools", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:names:['wraps']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/__init__.py", "target": "metagpt/actions/__init__.py:ActionType"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:ActionType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ActionType", "target": "{\"lineno\":27,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:__all__", "target": "{\"lineno\":47,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action_output", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['ActionOutput']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['UserRequirement']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DebugError']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteDesign']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DesignReview']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.project_management", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTasks']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.research", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.run_code", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['RunCode']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['SearchAndSummarize']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCodeReview']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRD']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRDReview']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_test", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTest']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:REVIEW", "target": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:LGTM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:LGTM", "target": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['List']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_init_with_instruction", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_aask", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_run_action_node", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.actions.action_node", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ActionNode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.context_mixin", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ContextMixin']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ProjectRepo']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.schema", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Message']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_update_prd", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "{\"lineno\":41,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":52,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:__future__", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['annotations']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:json", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:pathlib", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Path']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['ActionNode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FixBug']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an", "target": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['COMPETITIVE_QUADRANT_CHART', 'PROJECT_NAME', 'REFINED_PRD_NODE', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']", "target": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.const", "target": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.logs", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['logger']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.schema", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.common", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['CodeParser']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FileRepository']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['mermaid_to_file']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n", "target": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:__future__", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['annotations']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:pathlib", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Path']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:typing", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.actions.action", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Action']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.common", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['merge_docstring']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:__name__:__main__", "target": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:module:metagpt.actions", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:names:['Action']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['ActionNode']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_requirements", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_pytest", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_dependencies", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT", "target": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEMPLATE_CONTEXT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n", "target": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:subprocess", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pathlib", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Path']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:typing", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Tuple']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pydantic", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Field']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.actions.action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Action']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.logs", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['logger']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['handle_exception']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "{\"lineno\":584,\"end_lineno\":585,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_RESULT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS", "target": "{\"lineno\":31,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEXT_STEPS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "{\"lineno\":63,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION", "target": "{\"lineno\":71,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_FUNCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "{\"lineno\":83,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "{\"lineno\":97,\"end_lineno\":416,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "{\"lineno\":419,\"end_lineno\":489,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "{\"lineno\":492,\"end_lineno\":554,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "{\"lineno\":557,\"end_lineno\":557,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "{\"lineno\":561,\"end_lineno\":573,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['List', 'Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:__name__:__main__", "target": "{\"lineno\":588,\"end_lineno\":589,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.actions", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Message']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.actions", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['OutputParser']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "{\"lineno\":9,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:ast.Constant:\n@File : generate_questions.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['Action']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['ActionNode']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:shutil", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['REQUIREMENT_FILENAME']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['FileRepository']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['GitRepository']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['ProjectRepo']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "{\"lineno\":19,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":44,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "{\"lineno\":60,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "{\"lineno\":82,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "{\"lineno\":93,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Any', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:tenacity", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['WriteCode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.const", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodingContext']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodeParser']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/project_management_an.py", "target": "metagpt/actions/project_management_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:main", "target": "{\"lineno\":124,\"end_lineno\":128,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS", "target": "{\"lineno\":38,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST", "target": "{\"lineno\":59,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "{\"lineno\":76,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE", "target": "{\"lineno\":83,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:NODES", "target": "{\"lineno\":100,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_NODES", "target": "{\"lineno\":110,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_PM_NODE", "target": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PM_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:__name__:__main__", "target": "{\"lineno\":131,\"end_lineno\":132,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_requirements", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":23,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:json", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Action']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action_output", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['ActionOutput']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PM_NODE', 'REFINED_PM_NODE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.const", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.schema", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Document', 'Documents']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_compile_f", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_aask_v1", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "{\"lineno\":115,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:TAG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:TAG", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "{\"lineno\":43,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:REVIEW_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:REVIEW_TEMPLATE", "target": "{\"lineno\":62,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:REVISE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:REVISE_TEMPLATE", "target": "{\"lineno\":92,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVISE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:enum", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Enum']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseModel', 'Field', 'create_model', 'model_validator']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:tenacity", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.actions.action_outcls_registry", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['register_action_outcls']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.llm", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseLLM']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['llm_output_postprocess']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.human_interaction", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['HumanInteraction']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:__name__:__main__", "target": "{\"lineno\":684,\"end_lineno\":693,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE", "target": "{\"lineno\":16,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT", "target": "{\"lineno\":111,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE", "target": "{\"lineno\":128,\"end_lineno\":180,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE", "target": "{\"lineno\":182,\"end_lineno\":182,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_PLAN_AND_CHANGE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:ast.Constant:\n@Time : 2023/12/26\n@Author : mannaandpoem\n@File : write_code_plan_and_change_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/26\\n@Author : mannaandpoem\\n@File : write_code_plan_and_change_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['ActionNode']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['CodePlanAndChangeContext']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:os", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:zipfile", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:paddleocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.actions", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Action']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['OutputParser']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['File']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES", "target": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:pydantic", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:_bfs_build", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:_dfs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:__future__", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['annotations']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['LLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.base", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:__call__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:__call__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:abc", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['ABC']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['List']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:anytree", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['Node', 'RenderTree']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}]}