An Autonomous LLM Agent for Complex Task Solving
This report presents the forensic synthetic code analysis of OpenBMB/XAgent, a Python project with 8,533 GitHub stars. SynthScan v2.0 examined 51,615 lines of code across 349 source files, recording 430 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 14.6 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 430 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | command_input.py | 136 | Interrupts the current input process and returns the current data. Args: input_data (dict) | STRING |
| HIGH | ToolServer/ToolServerManager/main.py | 76 | Wait for the startup of node with id node_id. It probes the node status every seconds until creation_wait_seco | STRING |
| HIGH | ToolServer/ToolServerManager/main.py | 154 | Reconnect session of a node. Fetches node info and restarts the node if it exists. Args: node_id (str, | STRING |
| HIGH | ToolServer/ToolServerManager/main.py | 229 | Routes a request to a specific node. Fetches the node info, checks if it is valid and running. Updates latest | STRING |
| HIGH | ToolServer/ToolServerNode/config.py | 38 | Fetches a configuration value for a given key. Args: key (str): The configuration key to fet | STRING |
| HIGH | ToolServer/ToolServerNode/main.py | 155 | This function retrieves the tool names based on a query question using the ADA retriever. Args: questi | STRING |
| HIGH | ToolServer/ToolServerNode/main.py | 239 | This function executes a tool with the provided arguments and environment. Args: tool_name (str): The | STRING |
| HIGH | ToolServer/ToolServerNode/utils/response.py | 39 | Wrap the tool response in a standardized object structure (depending on its type) to allow decoding. Forma | STRING |
| HIGH | ToolServer/ToolServerNode/utils/openai.py | 49 | Sends a request to the OpenAI and gets a response. Args: messages: Payload to be sent to O | STRING |
| HIGH | ToolServer/ToolServerNode/utils/openai.py | 78 | Makes a request to the OpenAI by calling the instance of the class. Args: messages: Payloa | STRING |
| HIGH | XAgentServer/database/interface/interaction.py | 333 | delete interaction Args: db (Session): db session interaction_id (str): intera | STRING |
| HIGH | XAgentServer/database/interface/interaction.py | 365 | insert an interaction process for recording Args: db (Session): db session pro | STRING |
| HIGH | XAgentServer/database/interface/interaction.py | 436 | update send flag, if send success, update flag if send flag is True, it means that the process has been | STRING |
| HIGH | XAgentServer/database/interface/interaction.py | 462 | update receive flag, if receive success, update flag if this flag is True, it means that the process ha | STRING |
| HIGH | XAgentServer/database/interface/interaction.py | 487 | update human data Args: db (Session): db session interaction_id (str): interac | STRING |
| HIGH | XAgentServer/database/interface/interaction.py | 513 | if interaction is failed, insert error message this message will be displayed in the interaction list | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 34 | get interaction Args: db: db interaction_id: interaction id Returns: | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 101 | get parameter Args: db: db interaction_id: interaction id Returns: | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 120 | get init parameter Args: db: db interaction_id: interaction id Returns: | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 145 | get interaction by user id Args: db: db user_id: user id page_size: | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 165 | interaction is exist Args: db: db interaction_id: interaction id Return | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 251 | is running Args: db: db user_id: user id Returns: True if r | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 288 | get shared interaction Args: db: db interaction_id: interaction id | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 311 | search many shared Args: db: db page_size: page size page_index: pa | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 348 | search many raws Args: db: db interaction_id: interaction id Returns: | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 367 | get raw Args: db: db interaction_id: interaction id node_id: node i | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 388 | get next send Args: db: db interaction_id: interaction id Returns: | STRING |
| HIGH | XAgentServer/application/cruds/interaction.py | 471 | insert error Args: db: db interaction_id: interaction id message: m | STRING |
| HIGH | XAgent/config.py | 26 | Access the class attribute. Args: key (str): Key to access the class attribute. R | STRING |
| HIGH | XAgent/config.py | 129 | Get the normalized model name for a given input model name. Args: model_name (str, optional): Input mo | STRING |
| HIGH | XAgent/vector_db.py | 153 | The function to search the database for sentences similar to the query sentence. Args: query_s | STRING |
| HIGH | XAgent/ai_functions/function_manager.py | 75 | Executes a function by its name. Args: function_name (str): The name of the function to ex | STRING |
| HIGH | XAgent/ai_functions/request/obj_generator.py | 39 | Processes chat completion requests and retrieves responses. Args: kwargs: Request data parameters. | STRING |
| HIGH | XAgent/ai_functions/request/obj_generator.py | 136 | Validates arguments against the function schema. Args: function_schema (dict): Schema to validate t | STRING |
| HIGH | XAgent/ai_functions/request/obj_generator.py | 177 | Validates and refines the function call response. Args: req_kwargs: Request data parameters. | STRING |
| HIGH | XAgent/ai_functions/request/openai.py | 35 | Handle operation of OpenAI chat completion. This function operates OpenAI chat completion with provided | STRING |
| HIGH | XAgent/ai_functions/request/openai.py | 115 | Handle operation of OpenAI v1.x.x chat completion. This function operates OpenAI v1.x.x chat completion with pr | STRING |
| HIGH | XAgent/agent/utils.py | 5 | Parses the response and returns the command name and arguments. This function will raise the exception `json.d | STRING |
| HIGH | XAgent/agent/tool_agent/agent.py | 40 | This function generates a message list and a token list based on the input parameters using the `gener | STRING |
| HIGH | XAgent/workflow/task_handler.py | 197 | Generates search plan and process it for the current task. Args: plan (Plan): The plan to | STRING |
| HIGH | XAgent/inner_loop_search_algorithms/ReACT.py | 85 | Runs the chain search task. Args: config: Configuration for the search. agent: | STRING |
| HIGH | XAgent/inner_loop_search_algorithms/ReACT.py | 200 | Run the chain search task. Args: config: Configuration for the search. agent: | STRING |
| HIGH | Markdown_Docs/XAgent/function_handler.md | 123 | Generates search plan and process it for the current task. Args: plan (Plan): The plan to be processed | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | command.py | 0 | define a long task to run interaction args: parameter (interactionparameter): the parameter of interaction | STRING |
| HIGH | XAgentServer/application/websockets/recorder.py | 0 | define a long task to run interaction args: parameter (interactionparameter): the parameter of interaction | STRING |
| HIGH | XAgentServer/application/websockets/base.py | 0 | define a long task to run interaction args: parameter (interactionparameter): the parameter of interaction | STRING |
| HIGH | tests/test_1106_model_openai.py | 0 | {"choices": [{"finish_reason": "stop", "index": 0, "message": {"content": "hello, world!"}}]} | STRING |
| HIGH | tests/test_model_alias.py | 0 | {"choices": [{"finish_reason": "stop", "index": 0, "message": {"content": "hello, world!"}}]} | STRING |
| HIGH | Markdown_Docs/XAgent/ai_functions/request/openai.md | 0 | {"choices": [{"finish_reason": "stop", "index": 0, "message": {"content": "hello, world!"}}]} | STRING |
| HIGH | XAgentServer/application/websockets/replayer.py | 0 | main websocket server extends: websocketendpoint description: in this websocket, we will receive the args from user, and | STRING |
| HIGH | XAgentServer/application/websockets/share.py | 0 | main websocket server extends: websocketendpoint description: in this websocket, we will receive the args from user, and | STRING |
| HIGH | XAgentServer/application/websockets/base.py | 0 | main websocket server extends: websocketendpoint description: in this websocket, we will receive the args from user, and | STRING |
| HIGH | XAgentServer/application/websockets/replayer.py | 0 | connect to client args: websocket (websocket): a websocket object raises: xagentwebsocketconnecterror: if the user is ru | STRING |
| HIGH | XAgentServer/application/websockets/share.py | 0 | connect to client args: websocket (websocket): a websocket object raises: xagentwebsocketconnecterror: if the user is ru | STRING |
| HIGH | XAgentServer/application/websockets/base.py | 0 | connect to client args: websocket (websocket): a websocket object raises: xagentwebsocketconnecterror: if the user is ru | STRING |
| HIGH | XAgentServer/application/websockets/replayer.py | 0 | when disconnect with client, it will run this function override this function to do something when disconnect with clien | STRING |
| HIGH | XAgentServer/application/websockets/recorder.py | 0 | when disconnect with client, it will run this function override this function to do something when disconnect with clien | STRING |
| HIGH | XAgentServer/application/websockets/share.py | 0 | when disconnect with client, it will run this function override this function to do something when disconnect with clien | STRING |
| HIGH | XAgentServer/application/websockets/base.py | 0 | when disconnect with client, it will run this function override this function to do something when disconnect with clien | STRING |
| HIGH | XAgentServer/application/websockets/replayer.py | 0 | when receive data from client, it will run this function args: websocket (websocket): a websocket object data (any): the | STRING |
| HIGH | XAgentServer/application/websockets/recorder.py | 0 | when receive data from client, it will run this function args: websocket (websocket): a websocket object data (any): the | STRING |
| HIGH | XAgentServer/application/websockets/share.py | 0 | when receive data from client, it will run this function args: websocket (websocket): a websocket object data (any): the | STRING |
| HIGH | XAgentServer/application/websockets/base.py | 0 | when receive data from client, it will run this function args: websocket (websocket): a websocket object data (any): the | STRING |
| HIGH | XAgent/agent/plan_refine_agent/prompt.py | 0 | the example that will be given to the dispatcher to generate the prompt returns: example_input: the user query or the ta | STRING |
| HIGH | XAgent/agent/tool_agent/prompt.py | 0 | the example that will be given to the dispatcher to generate the prompt returns: example_input: the user query or the ta | STRING |
| HIGH | XAgent/agent/reflect_agent/prompt.py | 0 | the example that will be given to the dispatcher to generate the prompt returns: example_input: the user query or the ta | STRING |
| HIGH | XAgent/agent/plan_generate_agent/prompt.py | 0 | the example that will be given to the dispatcher to generate the prompt returns: example_input: the user query or the ta | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | command.py | 1 | CODE | |
| LOW | command.py | 3 | CODE | |
| LOW | command.py | 5 | CODE | |
| LOW | command.py | 14 | CODE | |
| LOW | command_input.py | 1 | CODE | |
| LOW | command_input.py | 5 | CODE | |
| LOW | command_input.py | 8 | CODE | |
| LOW | ToolServer/ToolServerManager/config.py | 2 | CODE | |
| LOW | ToolServer/ToolServerManager/config.py | 5 | CODE | |
| LOW | ToolServer/ToolServerManager/connections.py | 3 | CODE | |
| LOW | ToolServer/ToolServerManager/connections.py | 5 | CODE | |
| LOW | ToolServer/ToolServerManager/connections.py | 5 | CODE | |
| LOW | ToolServer/ToolServerManager/connections.py | 5 | CODE | |
| LOW | ToolServer/ToolServerManager/connections.py | 5 | CODE | |
| LOW | ToolServer/ToolServerManager/connections.py | 9 | CODE | |
| LOW | ToolServer/ToolServerManager/main.py | 11 | CODE | |
| LOW | ToolServer/ToolServerNode/config.py | 4 | CODE | |
| LOW | ToolServer/ToolServerNode/main.py | 2 | CODE | |
| LOW | ToolServer/ToolServerNode/main.py | 9 | CODE | |
| LOW | ToolServer/ToolServerNode/core/labels.py | 1 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/register.py | 6 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/register.py | 6 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/register.py | 6 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/__init__.py | 1 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/__init__.py | 1 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/__init__.py | 2 | CODE | |
| LOW | ToolServer/ToolServerNode/core/envs/web.py | 3 | CODE | |
| LOW | ToolServer/ToolServerNode/core/envs/web.py | 3 | CODE | |
| LOW | ToolServer/ToolServerNode/core/envs/web.py | 3 | CODE | |
| LOW | ToolServer/ToolServerNode/core/envs/pycoding.py | 3 | CODE | |
| LOW | ToolServer/ToolServerNode/utils/__init__.py | 1 | CODE | |
| LOW | ToolServer/ToolServerNode/utils/response.py | 2 | CODE | |
| LOW | ToolServer/ToolServerNode/utils/response.py | 2 | CODE | |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 1 | CODE | |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 2 | CODE | |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 4 | CODE | |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 5 | CODE | |
| LOW | ToolServer/ToolServerNode/extensions/envs/shell.py | 9 | CODE | |
| LOW | XAgentServer/database/interface/user.py | 4 | CODE | |
| LOW | XAgentServer/database/interface/user.py | 7 | CODE | |
| LOW | XAgentServer/application/routers/conv.py | 4 | CODE | |
| LOW | XAgentServer/application/websockets/replayer.py | 5 | CODE | |
| LOW | XAgentServer/application/websockets/replayer.py | 6 | CODE | |
| LOW | XAgentServer/application/websockets/replayer.py | 20 | CODE | |
| LOW | XAgentServer/application/websockets/share.py | 23 | CODE | |
| LOW | XAgent/running_recorder.py | 8 | CODE | |
| LOW | XAgent/recorder.py | 5 | CODE | |
| LOW | XAgent/summarization_system.py | 1 | CODE | |
| LOW | XAgent/core.py | 13 | CODE | |
| LOW | XAgent/core.py | 19 | CODE | |
| LOW | XAgent/vector_db.py | 4 | CODE | |
| LOW | XAgent/utils.py | 3 | CODE | |
| LOW | XAgent/utils.py | 3 | CODE | |
| LOW | XAgent/utils.py | 5 | CODE | |
| LOW | XAgent/logs.py | 7 | CODE | |
| LOW | XAgent/function_handler.py | 1 | CODE | |
| LOW | XAgent/function_handler.py | 2 | CODE | |
| LOW | XAgent/function_handler.py | 4 | CODE | |
| LOW | XAgent/function_handler.py | 5 | CODE | |
| LOW | XAgent/function_handler.py | 7 | CODE | |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ToolServer/ToolServerNode/main.py | 170 | except Exception as e: | CODE |
| LOW | ToolServer/ToolServerNode/main.py | 270 | except Exception as e: | CODE |
| LOW | ToolServer/ToolServerNode/core/register/register.py | 112 | except Exception as e: | CODE |
| LOW | ToolServer/ToolServerNode/core/register/register.py | 145 | except Exception as e: | CODE |
| LOW | ToolServer/ToolServerNode/core/envs/web.py | 84 | except Exception as e: | CODE |
| LOW | ToolServer/ToolServerNode/utils/retriever.py | 116 | except Exception as e: | CODE |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 22 | except Exception as e: | CODE |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 27 | except Exception as e: | CODE |
| LOW | XAgentServer/server.py | 105 | except Exception as e: | CODE |
| LOW | XAgentServer/server.py | 117 | except Exception as e: | CODE |
| LOW | XAgentServer/loggers/logs.py | 217 | except Exception: | CODE |
| LOW | XAgentServer/loggers/logs.py | 226 | except Exception: | CODE |
| LOW | XAgentServer/application/dependence.py | 39 | except Exception as e: | CODE |
| LOW | XAgentServer/application/routers/user.py | 53 | except Exception: | CODE |
| LOW | XAgentServer/application/routers/conv.py | 171 | except Exception as e: | CODE |
| LOW | XAgentServer/application/websockets/replayer.py | 70 | except Exception as exc: | CODE |
| LOW | XAgentServer/application/websockets/recorder.py | 79 | except Exception as exc: | CODE |
| LOW⚡ | XAgentServer/application/websockets/common.py | 53 | except Exception: | CODE |
| LOW⚡ | XAgentServer/application/websockets/common.py | 63 | except Exception: | CODE |
| LOW | XAgentServer/application/websockets/share.py | 70 | except Exception as exc: | CODE |
| LOW | XAgentServer/application/websockets/base.py | 102 | except Exception as exc: | CODE |
| LOW | XAgentServer/application/websockets/base.py | 385 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 26 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 48 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 70 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 92 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 115 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 133 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/user.py | 151 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 29 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 47 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 63 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 79 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 96 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 114 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 136 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 178 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 194 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 223 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 246 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 264 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 281 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 303 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 327 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 343 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 362 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 383 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 401 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 419 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 437 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 462 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 508 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 524 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 542 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/recorder.py | 28 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/recorder.py | 48 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/recorder.py | 65 | except Exception as e: | CODE |
| LOW | XAgentServer/application/cruds/recorder.py | 90 | except Exception as e: | CODE |
| LOW | XAgent/vector_db.py | 146 | except Exception as e: | CODE |
| LOW | XAgent/vector_db.py | 183 | except Exception as e: | CODE |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | run.py | 41 | def execute_command_line_process(args: argparse.Namespace, quiet_mode: bool = False) -> None: | CODE |
| LOW | ToolServer/ToolServerNode/main.py | 128 | def generate_directory_structure(path): | CODE |
| LOW | ToolServer/ToolServerNode/core/base.py | 69 | def __get_defined_func_name__(cls) -> list[str]: | CODE |
| LOW | ToolServer/ToolServerNode/core/envs/filesystem.py | 29 | def _is_path_within_workspace(self,path:str)->bool: | CODE |
| LOW | ToolServer/ToolServerNode/utils/import_helper.py | 3 | def import_all_modules_in_folder(file,name): | CODE |
| LOW | ToolServer/ToolServerNode/extensions/envs/rapidapi.py | 34 | def convert_rapidapi_desc_to_code(rapidapi_desc:dict)->list[dict]: | CODE |
| LOW | tests/test_security_regressions.py | 12 | def _load_toolserver_path_security(): | CODE |
| LOW | tests/test_security_regressions.py | 28 | def test_toolserver_upload_rejects_path_components(tmp_path): | CODE |
| LOW | tests/test_security_regressions.py | 40 | def test_workspace_file_cannot_escape_record_directory(tmp_path): | CODE |
| LOW | tests/test_security_regressions.py | 53 | def test_workspace_path_rejects_symlink_escape(tmp_path): | CODE |
| LOW | tests/test_security_regressions.py | 64 | def test_runtime_tool_registration_is_not_exposed(): | CODE |
| LOW | tests/test_function_call_utils.py | 32 | def test_recovers_text_tool_call_as_subtask_handle(): | CODE |
| LOW | tests/test_run.py | 25 | def test_execute_command_line_process_quiet_mode(mock_start_command_line, mock_argv): | CODE |
| LOW | tests/test_run.py | 35 | def test_execute_command_line_process_normal_mode(mock_start_command_line, mock_argv): | CODE |
| LOW | tests/test_http_utils.py | 4 | def test_toolserver_timeout_allows_slow_node_startup(): | CODE |
| LOW | tests/test_file_utils.py | 4 | def test_write_binary_file_creates_destination_directory(tmp_path): | CODE |
| LOW | tests/test_serialization.py | 8 | def test_to_json_compatible_serializes_dates_recursively(): | CODE |
| LOW | tests/test_serialization.py | 22 | def test_parse_serialized_value_preserves_predecoded_object(): | CODE |
| LOW | tests/test_serialization.py | 28 | def test_parse_serialized_value_decodes_text(): | CODE |
| LOW | XAgentServer/interaction.py | 81 | def register_toolserver_interface(self, toolserver_interface: ToolServerInterface): | CODE |
| LOW | XAgentServer/database/interface/interaction.py | 103 | def search_interaction_by_user_id(cls, | CODE |
| LOW | XAgentServer/database/interface/interaction.py | 242 | def update_interaction_status(cls, | CODE |
| LOW | XAgentServer/database/interface/interaction.py | 273 | def update_interaction_parameter(cls, | CODE |
| LOW | XAgentServer/application/main.py | 135 | async def validation_exception_handler(request: Request, exc: RequestValidationError): | STRING |
| LOW | XAgentServer/application/routers/conv.py | 285 | async def update_interaction_parameter(user_id: str = Depends(user_is_available), | CODE |
| LOW | XAgentServer/application/routers/conv.py | 314 | async def update_interaction_description(user_id: str = Depends(user_is_available), | CODE |
| LOW⚡ | XAgentServer/application/websockets/common.py | 68 | def handle_workspace_filelist(file_list): | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 140 | def search_interaction_by_user_id(cls, | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 198 | def update_interaction_status(cls, | CODE |
| LOW | XAgentServer/application/cruds/interaction.py | 227 | def update_interaction_parameter(cls, | CODE |
| LOW | XAgentWeb/src/directives/click-outside.ts | 86 | export function setupClickOutsideDirective(app: App) { | CODE |
| LOW | XAgent/summarization_system.py | 29 | def add_father_child_relation(cls, father, child): | CODE |
| LOW | XAgent/summarization_system.py | 137 | def get_summarzation_message_all(cls, father_summarize_node: SummarizationNode, message_list: List[Message]) -> List | CODE |
| LOW | XAgent/summarization_system.py | 155 | def get_summarzation_message_recursive(cls, father_summarize_node: SummarizationNode, new_message: Message): | STRING |
| LOW | XAgent/core.py | 136 | def register_toolserver_interface(self, param: XAgentParam): | CODE |
| LOW | XAgent/core.py | 149 | def register_function_handler(self, config): | CODE |
| LOW | XAgent/core.py | 161 | def register_working_memory_function(self): | CODE |
| LOW | XAgent/core.py | 171 | def register_agent_dispatcher(self, param: XAgentParam): | CODE |
| LOW | XAgent/core.py | 182 | def register_vector_db_interface(self): | CODE |
| LOW | XAgent/http_utils.py | 1 | def toolserver_request_timeout(config) -> tuple[float, float]: | CODE |
| LOW | XAgent/function_handler.py | 83 | def change_subtask_handle_function_enum(self, function_name_list: List[str]): | CODE |
| LOW⚡ | XAgent/toolserver_interface.py | 263 | def get_json_schema_for_tools(self, command_names): | CODE |
| LOW | XAgent/ai_functions/request/function_call_utils.py | 26 | def recover_function_call_from_content(content: str, functions: list[dict]): | CODE |
| LOW | XAgent/ai_functions/request/obj_generator.py | 81 | def _get_chatcompletion_request_func(self, request_type:str): | CODE |
| LOW | XAgent/ai_functions/request/obj_generator.py | 135 | def load_args_with_schema_validation(self,function_schema:dict,args:str,messages:list=[],*,return_response=False,res | CODE |
| LOW | XAgent/agent/plan_refine_agent/prompt.py | 72 | def get_examples_for_dispatcher(): | STRING |
| LOW | XAgent/agent/tool_agent/agent.py | 75 | def change_tool_call_description(message:dict,reverse:bool=False): | CODE |
| LOW | XAgent/agent/tool_agent/prompt.py | 85 | def get_examples_for_dispatcher(): | STRING |
| LOW | XAgent/agent/reflect_agent/prompt.py | 32 | def get_examples_for_dispatcher(): | CODE |
| LOW | XAgent/agent/dispatcher_agent/agent.py | 111 | def extract_prompts_from_response(self, message): | CODE |
| LOW | XAgent/agent/plan_generate_agent/prompt.py | 44 | def get_examples_for_dispatcher(): | CODE |
| LOW | XAgent/workflow/working_memory.py | 27 | def get_working_memory_function(cls): | CODE |
| LOW | XAgent/workflow/plan_exec.py | 19 | def plan_function_output_parser(function_output_item: dict) -> Plan: | CODE |
| LOW | XAgent/workflow/plan_exec.py | 187 | def plan_iterate_based_on_memory_system(self): | CODE |
| LOW | XAgentGen/xgen/parser/function_parser.py | 49 | def create_function_call_model(cls): | CODE |
| LOW | XAgentGen/xgen/parser/function_parser.py | 270 | def create_all_functions_model(self,extra_arguments:Dict[str,Any]=None,functions:list=None,function_call:Dict[st | CODE |
| LOW | Markdown_Docs/XAgent/utils.md | 233 | def plan_function_output_parser(function_output_item: dict) -> Plan: | CODE |
| LOW | Markdown_Docs/XAgent/agent/base_agent.md | 242 | def change_tool_call_description(message:dict,reverse:bool=False): | CODE |
| LOW | Markdown_Docs/XAgentGen/xgen/parser/function_parser.md | 103 | def create_function_call_model(cls): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | command.py | 201 | # Create a new raw data to record | COMMENT |
| MEDIUM | ToolServer/ToolServerManager/connections.py | 19 | # Create an instance of AsyncIOMotorClient for asynchronous MongoDB operations. | COMMENT |
| MEDIUM | ToolServer/ToolServerManager/connections.py | 28 | # Define a Docker client object | COMMENT |
| MEDIUM | XAgentServer/loggers/logs.py | 50 | # Create a handler for console which simulate typing | COMMENT |
| MEDIUM | XAgentServer/loggers/logs.py | 55 | # Create a handler for console without typing simulation | COMMENT |
| MEDIUM | XAgentServer/loggers/logs.py | 178 | # Create a handler for JSON files | COMMENT |
| MEDIUM | XAgentServer/application/websockets/base.py | 248 | # Create a new raw data to record | COMMENT |
| MEDIUM | XAgent/logs.py | 51 | # Create a handler for console which simulate typing | COMMENT |
| MEDIUM | XAgent/logs.py | 56 | # Create a handler for console without typing simulation | COMMENT |
| MEDIUM | XAgent/logs.py | 187 | # Create a handler for JSON files | COMMENT |
| MEDIUM | XAgent/message_history.py | 310 | # Create a copy of the new_events list to prevent modifying the original list | COMMENT |
| MEDIUM | XAgent/global_vars.py | 2 | # Importing necessary modules | COMMENT |
| MEDIUM | XAgent/global_vars.py | 9 | # Creating the instances of the classes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | command_input.py | 95 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/wrapper.py | 85 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/wrapper.py | 94 | CODE | |
| LOW | ToolServer/ToolServerNode/core/register/register.py | 172 | CODE | |
| LOW | ToolServer/ToolServerNode/core/envs/web.py | 96 | CODE | |
| LOW | ToolServer/ToolServerNode/utils/retriever.py | 61 | CODE | |
| LOW | ToolServer/ToolServerNode/utils/response.py | 38 | CODE | |
| LOW | XAgentServer/server.py | 31 | CODE | |
| LOW | XAgentServer/application/routers/conv.py | 114 | CODE | |
| LOW | XAgentServer/application/websockets/replayer.py | 52 | CODE | |
| LOW | XAgentServer/application/websockets/recorder.py | 58 | CODE | |
| LOW | XAgentServer/application/websockets/recorder.py | 282 | CODE | |
| LOW | XAgentServer/application/websockets/common.py | 24 | CODE | |
| LOW | XAgentServer/application/websockets/share.py | 52 | CODE | |
| LOW | XAgentServer/application/websockets/base.py | 81 | CODE | |
| LOW | XAgentServer/application/websockets/base.py | 344 | CODE | |
| LOW | XAgent/running_recorder.py | 338 | CODE | |
| LOW | XAgent/recorder.py | 321 | CODE | |
| LOW | XAgent/function_handler.py | 181 | CODE | |
| LOW | XAgent/message_history.py | 288 | CODE | |
| LOW | XAgent/toolserver_interface.py | 263 | CODE | |
| LOW | XAgent/toolserver_interface.py | 305 | CODE | |
| LOW | XAgent/ai_functions/request/openai.py | 34 | CODE | |
| LOW | XAgent/ai_functions/request/openai.py | 114 | CODE | |
| LOW | XAgent/agent/dispatcher.py | 112 | CODE | |
| LOW | XAgent/agent/base_agent.py | 77 | CODE | |
| LOW | XAgent/workflow/plan_exec.py | 208 | CODE | |
| LOW | XAgent/inner_loop_search_algorithms/ReACT.py | 199 | CODE | |
| LOW | XAgentGen/xgen/server/message_formater.py | 100 | CODE | |
| LOW | XAgentGen/xgen/parser/function_parser.py | 75 | CODE | |
| LOW | XAgentGen/xgen/parser/function_parser.py | 109 | CODE | |
| LOW | XAgentGen/xgen/parser/function_parser.py | 131 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 94 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 95 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 96 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 98 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 99 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 101 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 121 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 122 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 123 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 124 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 130 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 131 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 143 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 144 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 146 | CODE | |
| MEDIUM | ToolServer/ToolServerNode/utils/retriever.py | 147 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 41 | COMMENT | |
| LOW | …olServer/ToolServerNode/extensions/tools/calculator.py | 61 | # # Do further cleaning to retain only the input and result pods | COMMENT |
| LOW | XAgentWeb/types/router-type.ts | 1 | import { RouteMeta, RouteRecordRaw } from 'vue-router' | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 1 | // var useSSE = function (url: string, options: any) { | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 21 | COMMENT | |
| LOW | XAgentWeb/src/composables/useSSE.ts | 41 | COMMENT | |
| LOW | XAgentWeb/src/composables/useSSE.ts | 61 | COMMENT | |
| LOW | XAgentWeb/src/composables/useSSE.ts | 81 | // var event = new CustomEvent('readystatechange') | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 101 | // return | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 121 | // this.chunk = '' | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 141 | // if (!chunk || chunk.length === 0) { | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 161 | // var value = line.substring(index + 1).trimLeft() | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 181 | // if (this.xhr.readyState === XMLHttpRequest.DONE) { | COMMENT |
| LOW | XAgentWeb/src/composables/useSSE.ts | 201 | // } | COMMENT |
| LOW | XAgentWeb/src/composables/useSensitive.ts | 1 | COMMENT | |
| LOW | XAgentWeb/src/composables/useSensitive.ts | 21 | // map.set(ch, nextMap) | COMMENT |
| LOW | XAgentWeb/src/composables/useSensitive.ts | 41 | // if (currentMap.get('isEnd') === true) { | COMMENT |
| LOW | XAgentWeb/src/utils/throttle.ts | 1 | // const throttle = (fn: Function, delay: number) => { | COMMENT |
| LOW | …entWeb/src/views/playground/components/Inferencing.vue | 161 | COMMENT | |
| LOW | …entWeb/src/views/playground/components/Inferencing.vue | 181 | innerNumber: innerNumber.value, | COMMENT |
| LOW | …entWeb/src/views/playground/components/Inferencing.vue | 201 | COMMENT | |
| LOW | …gentWeb/src/views/playground/components/FileUpload.vue | 61 | // let allowList:any = [],allowTag = true,tipFileName = `` | COMMENT |
| LOW | …Web/src/views/playground/components/HistorySidebar.vue | 201 | // if (isShouldRefreshHistory.value) queryHistoryData() | COMMENT |
| LOW | XAgentWeb/src/views/playground/components/Setting.vue | 121 | // // 0.6: { | COMMENT |
| LOW | XAgentWeb/src/views/login/login.vue | 161 | const changePhone = async () => { | COMMENT |
| LOW | XAgentWeb/src/views/login/login.vue | 241 | COMMENT | |
| LOW | XAgentWeb/src/views/login/component/ApplyForm.vue | 261 | // content: attr(data-label); | COMMENT |
| LOW | XAgent/global_vars.py | 1 | COMMENT | |
| LOW | XAgent/agent/tool_agent/agent.py | 141 | message (dict): Dictionary of message data containing content, function call and arguments. | COMMENT |
| LOW | XAgent/agent/dispatcher_agent/prompt.py | 1 | # SYSTEM_PROMPT = """Your task is to devise an appropriate role-based name (_GPT) and a clear prompt for an autonomous a | COMMENT |
| LOW | Markdown_Docs/XAgent/data_structure/node.md | 101 | print(json_data) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | command.py | 63 | CODE | |
| LOW | ToolServer/ToolServerManager/main.py | 269 | CODE | |
| LOW | ToolServer/ToolServerNode/main.py | 94 | CODE | |
| LOW | ToolServer/ToolServerNode/main.py | 116 | CODE | |
| LOW | XAgentServer/models/user.py | 9 | CODE | |
| LOW | XAgentServer/models/interaction.py | 9 | CODE | |
| LOW | XAgent/toolserver_interface.py | 122 | CODE | |
| LOW | XAgent/toolserver_interface.py | 159 | CODE | |
| LOW | XAgent/ai_functions/request/xagent.py | 32 | CODE | |
| LOW | XAgent/workflow/reflection.py | 62 | CODE | |
| LOW | XAgentGen/xgen/server/message_formater.py | 38 | CODE | |
| LOW | XAgentGen/xgen/text/generate/regex.py | 20 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | command.py | 250 | # and you can change the wait_seconds | COMMENT |
| MEDIUM | XAgentServer/application/websockets/base.py | 302 | # and you can change the wait_seconds | COMMENT |
| MEDIUM | assets/config.yml | 8 | # you can use any kwargs supported by openai.ChatCompletion here | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | XAgent/agent/plan_refine_agent/agent.py | 29 | """ Parses information in order to refine the existing plan. | STRING |
| MEDIUM | XAgent/agent/dispatcher_agent/agent.py | 100 | # TODO: Make it more robust. Here we assume only the first message is system prompt | COMMENT |
| MEDIUM | XAgent/workflow/plan_exec.py | 164 | # TODO: not robust. dispatcher generated prompt may not contain these specified placeholders? | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | XAgentWeb/types/talk-type.ts | 26 | isLatest?: boolean // Is this the latest message generated by AI | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | XAgentGen/xgen/parser/function_parser.py | 86 | new_prop["type"] = "List[null]" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ToolServer/ToolServerManager/node_checker.py | 20 | # Check if each node exists in Docker | COMMENT |
| LOW | ToolServer/ToolServerManager/node_checker.py | 50 | # Check if node is running | COMMENT |