{"record":{"id":"078afc997a06ace9","repo":"HKUDS/Vibe-Trading","slug":"unsupported-scheduled-research-action-action-r","errorCode":null,"errorMessage":"unsupported scheduled_research action {action!r}","messagePattern":"unsupported scheduled_research action (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"agent/src/tools/scheduled_research_tool.py","lineNumber":126,"sourceCode":"            job_id = str(kwargs.get(\"job_id\") or \"\").strip()\n            job = default_store().get(job_id)\n            if job is None:\n                raise ValueError(f\"scheduled research job {job_id!r} was not found\")\n            payload = public_job(job)\n        elif action == \"list_playbooks\":\n            payload = {\"playbooks\": [item.to_dict() for item in list_playbooks()]}\n        elif action == \"propose_create\":\n            draft = kwargs.get(\"draft\")\n            if not isinstance(draft, dict):\n                raise ValueError(\"draft is required for propose_create\")\n            payload = propose_create(draft, session_id=session_id)\n        elif action == \"propose_cancel\":\n            job_id = str(kwargs.get(\"job_id\") or \"\").strip()\n            if not job_id:\n                raise ValueError(\"job_id is required for propose_cancel\")\n            payload = propose_cancel(job_id, session_id=session_id)\n        else:\n            raise ValueError(f\"unsupported scheduled_research action {action!r}\")\n        return json.dumps(payload, ensure_ascii=False)\n","sourceCodeStart":108,"sourceCodeEnd":128,"githubUrl":"https://github.com/HKUDS/Vibe-Trading/blob/80ffdda44c5c4db0dd84d70e051cca591cea67df/agent/src/tools/scheduled_research_tool.py#L108-L128","documentation":"The scheduled_research tool dispatches on an `action` kwarg and only supports a fixed set of actions (e.g. propose_create, propose_cancel). Any other action string reaches the else branch and raises ValueError naming the unsupported action. This guards the tool's internal action router.","triggerScenarios":"Calling scheduled_research tool with action=\"delete\" / action=\"propose_update\" / any string other than the supported actions, or with a typo like \"propose_cancell\".","commonSituations":"Agent prompt drift where the LLM invents an action name; API/schema changes that added new actions not supported by the installed version; case mismatches like \"Propose_Cancel\" (matching is exact).","solutions":["Check the tool's source/spec for the supported action list and use one of them exactly (e.g. \"propose_create\" or \"propose_cancel\")","If you need a missing capability (e.g. reschedule), check for a newer version of the tool or file a feature request","Fix typos and casing in the action kwarg"],"exampleFix":"# before\ntool.execute(action=\"cancel\", job_id=\"job-1\")\n# after\ntool.execute(action=\"propose_cancel\", job_id=\"job-1\")","handlingStrategy":"validation","validationCode":"SUPPORTED = {\"propose_create\", \"propose_cancel\"}  # keep in sync with the tool\nif action not in SUPPORTED:\n    raise ValueError(f\"unsupported action {action!r}; choose from {sorted(SUPPORTED)}\")\ntool.execute(action=action, **kwargs)","typeGuard":null,"tryCatchPattern":"catch ValueError and surface the message (it names the bad action) back to the agent/user for correction","preventionTips":["Keep a constant list of valid actions derived from the tool schema","Validate the action string before calling execute"],"tags":["scheduled-research","tool-args","unsupported-action","dispatch"],"backgroundTag":"unsupported-action-value","analyzedSha":"80ffdda44c5c4db0dd84d70e051cca591cea67df","analyzedAt":"2026-08-28T12:46:38.989Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}