{"record":{"id":"f3861d6cae52d035","repo":"OpenBMB/ChatDev","slug":"humanpromptservice-is-not-configured-cannot-execu","errorCode":null,"errorMessage":"HumanPromptService is not configured; cannot execute human node","messagePattern":"HumanPromptService is not configured; cannot execute human node","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"runtime/node/executor/human_executor.py","lineNumber":42,"sourceCode":"        Returns:\n            Result supplied by the human reviewer\n        \"\"\"\n        self._ensure_not_cancelled()\n        if node.node_type != \"human\":\n            raise ValueError(f\"Node {node.id} is not a human node\")\n        \n        human_config = node.as_config(HumanConfig)\n        if not human_config:\n            raise ValueError(f\"Node {node.id} has no human configuration\")\n        \n        human_task_description = human_config.description\n        # Use prompt-style preview so humans see the same flattened text format\n        # instead of raw message JSON.\n        input_data = self._inputs_to_text(inputs)\n\n        prompt_service = self.context.get_human_prompt_service()\n        if prompt_service is None:\n            raise RuntimeError(\"HumanPromptService is not configured; cannot execute human node\")\n\n        prompt_result = prompt_service.request(\n            node.id,\n            human_task_description or \"\",\n            inputs=input_data,\n            metadata={\"node_type\": \"human\"},\n        )\n\n        return [self._build_message(\n            MessageRole.USER,\n            prompt_result.as_message_content(),\n            source=node.id,\n        )]\n\n","sourceCodeStart":24,"sourceCodeEnd":57,"githubUrl":"https://github.com/OpenBMB/ChatDev/blob/4fb2db0ea90375ce1059f44fe03ffbd191a7a169/runtime/node/executor/human_executor.py#L24-L57","documentation":"Executing a human node requires a HumanPromptService (delivered via context.get_human_prompt_service()) to ask the reviewer; when it is None the executor cannot solicit input and raises RuntimeError.","triggerScenarios":"Running a workflow containing a 'human' node when the runtime context was built without a HumanPromptService (CLI/batch run, misconfigured server).","commonSituations":"CI runs executing human-node workflows headlessly; server deployment missing the prompt-service wiring; running the same graph in an environment where human-in-the-loop was never set up.","solutions":["Configure a HumanPromptService on the runtime context (web UI, Slack, CLI prompt) before running human nodes","Remove the human node for automated/headless runs or replace it with an auto-approve stub","Fail fast at workflow validation time if any human node exists without a prompt service"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if any(n.node_type == 'human' for n in workflow.nodes):\n    assert context.get_human_prompt_service() is not None, 'HumanPromptService required'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Fail fast at validation when human nodes lack prompt services","Provide an auto-approve stub service for CI runs"],"tags":["human-node","service-missing","configuration"],"backgroundTag":"service-not-configured","analyzedSha":"4fb2db0ea90375ce1059f44fe03ffbd191a7a169","analyzedAt":"2026-08-27T14:35:29.622Z","schemaVersion":2},"datasetVersion":"2026-08-27T19:17:21.184Z"}