OpenBMB/ChatDev · error · SystemExit
2
Error message
2
What it means
404 raised from the workflow-persist helper when allow_overwrite is true (the update path) but the target YAML file does not exist. Update is only valid for existing workflows.
Source
Thrown at check/check_workflow.py:155
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
- Upload (create) the workflow first via the upload API, then update.
- Verify the exact filename with the list-workflows endpoint.
- If the file was deleted unintentionally, restore it and retry the update.
Example fix
# before
update_workflow_content("missing.yaml", content) # 404
# after
upload_workflow_content("missing.yaml", content) # create first
update_workflow_content("missing.yaml", content2) # then update Defensive patterns
Strategy: validation
Validate before calling
const exists = (await listWorkflows()).includes(filename); if (!exists) await uploadWorkflow(filename, content);
Type guard
async function canUpdate(name: string) { return (await listWorkflows()).includes(name); } Try / catch
catch (e) { if (e.status === 404 && updating) await uploadWorkflow(filename, content); } Prevention
- Create-then-update ordering in scripts
- Sync workflow sets across environments
When it happens
Trigger: Calling the update API for a workflow filename that was never uploaded or has been deleted; updating after someone removed the file.
Common situations: Environments out of sync (dev file exists, prod doesn't); updating a renamed/deleted workflow; stale client state referencing old names.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- 1
- 1
- YAML root must be a mapping
- Workflow logical issues detected for '{config_path}': {forma
- YAML root must be a mapping
AI-assisted analysis of OpenBMB/ChatDev@4fb2db0ea9 (2026-08-27).
Data as JSON: /api/errors/9df6f9d84d780bf6.
Report an issue: GitHub.