OpenBMB/ChatDev · error · SystemExit
1
Error message
1
What it means
409 Conflict raised from the shared workflow-persist helper when uploading workflow content whose YAML file already exists on disk and allow_overwrite is false (the upload path). The update API exists specifically for overwriting.
Source
Thrown at check/check_workflow.py:148
def main():
parser = argparse.ArgumentParser(
description="Check workflow structure: unique natural start/end or explicit start/end per (sub)graph")
parser.add_argument("path", nargs="?", default="design_0.4.0.yaml", help="Path to YAML file")
parser.add_argument("--no-schema", action="store_true", help="Skip schema validation (0.4.0)")
parser.add_argument("--fn-module", dest="fn_module", default=None,
help="Module name or .py path where edge functions are defined (for schema validation)")
args = parser.parse_args()
data = read_yaml(args.path)
if not args.no_schema:
schema_errors = check_yaml.validate_design(data, set_defaults=True, fn_module_ref=args.fn_module)
if schema_errors:
print("Invalid schema:")
for e in schema_errors:
print(f"- {e}")
raise SystemExit(1)
logic_errors = check_workflow_structure(data)
if logic_errors:
print("Workflow issues:")
for e in logic_errors:
print(f"- {e}")
raise SystemExit(2)
else:
print("Workflow OK.")
if __name__ == "__main__":
main()
View on GitHub (pinned to 4fb2db0ea9)
Solutions
- Use the update API endpoint to overwrite the existing workflow.
- Or upload under a new filename.
- Delete the existing workflow first if you truly want a fresh create.
Example fix
# before
POST /api/workflows/content {"filename": "flow.yaml", "content": ...}
# after
PUT /api/workflows/content {"filename": "flow.yaml", "content": ...} # update API allows overwrite Defensive patterns
Strategy: try-catch
Validate before calling
// check workflow existence via list endpoint before upload
Try / catch
catch (e) { if (e.status === 409) switchToUpdateApi(filename, content); } Prevention
- Use update for existing workflows, upload only for new
- Make CI scripts handle 409 by falling back to update
When it happens
Trigger: POST /api/workflows upload with a filename that already exists in YAML_DIR without overwrite semantics; replaying an upload request in CI or scripts.
Common situations: Re-deploying the same workflow; iterating locally and re-uploading instead of updating; automated pipelines that don't distinguish create vs update.
Related errors
- 2
- 1
- '{legacy_key}' is deprecated. Use the new graph-level memory
- YAML root must be a mapping
- YAML root must be a mapping
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/f7b514b74c3bc2db.
Report an issue: GitHub.