HKUDS/Vibe-Trading · error · ValueError

unsupported scheduled_research action {action!r}

Error message

unsupported scheduled_research action {action!r}

What it means

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.

Source

Thrown at agent/src/tools/scheduled_research_tool.py:126

            job_id = str(kwargs.get("job_id") or "").strip()
            job = default_store().get(job_id)
            if job is None:
                raise ValueError(f"scheduled research job {job_id!r} was not found")
            payload = public_job(job)
        elif action == "list_playbooks":
            payload = {"playbooks": [item.to_dict() for item in list_playbooks()]}
        elif action == "propose_create":
            draft = kwargs.get("draft")
            if not isinstance(draft, dict):
                raise ValueError("draft is required for propose_create")
            payload = propose_create(draft, session_id=session_id)
        elif action == "propose_cancel":
            job_id = str(kwargs.get("job_id") or "").strip()
            if not job_id:
                raise ValueError("job_id is required for propose_cancel")
            payload = propose_cancel(job_id, session_id=session_id)
        else:
            raise ValueError(f"unsupported scheduled_research action {action!r}")
        return json.dumps(payload, ensure_ascii=False)

View on GitHub (pinned to 80ffdda44c)

Solutions

  1. Check the tool's source/spec for the supported action list and use one of them exactly (e.g. "propose_create" or "propose_cancel")
  2. If you need a missing capability (e.g. reschedule), check for a newer version of the tool or file a feature request
  3. Fix typos and casing in the action kwarg

Example fix

# before
tool.execute(action="cancel", job_id="job-1")
# after
tool.execute(action="propose_cancel", job_id="job-1")
Defensive patterns

Strategy: validation

Validate before calling

SUPPORTED = {"propose_create", "propose_cancel"}  # keep in sync with the tool
if action not in SUPPORTED:
    raise ValueError(f"unsupported action {action!r}; choose from {sorted(SUPPORTED)}")
tool.execute(action=action, **kwargs)

Try / catch

catch ValueError and surface the message (it names the bad action) back to the agent/user for correction

Prevention

When it happens

Trigger: Calling scheduled_research tool with action="delete" / action="propose_update" / any string other than the supported actions, or with a typo like "propose_cancell".

Common situations: 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).

Related errors


AI-assisted analysis of HKUDS/Vibe-Trading@80ffdda44c (2026-08-28). Data as JSON: /api/errors/078afc997a06ace9. Report an issue: GitHub.