feat: canonical flow directory with sync engine (files are source of truth)

This commit is contained in:
Jonas Miederer 2026-09-07 08:59:56 +00:00
parent 7d5ade6b6a
commit c65e3ed332
16 changed files with 4167 additions and 42 deletions

View file

@ -6,6 +6,10 @@ Langflow UI would export. Run with the backend venv (has the `lfx` dev dep)::
uv run python scripts/make_flow_fixtures.py
Writes to two places:
- backend/tests/fixtures/flows/ (test fixtures, never deployed as-is)
- backend/flows/ (canonical source of truth, synced into DB + LFX)
Then verify::
uv run lfx validate --level 4 backend/tests/fixtures/flows/
@ -21,6 +25,7 @@ from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent.parent
FIXTURE_DIR = REPO_ROOT / "backend" / "tests" / "fixtures" / "flows"
FLOW_DIR = REPO_ROOT / "backend" / "flows"
HANDLE_QUOTE = "\u0153" # ReactFlow handle-id quoting used by Langflow exports
@ -430,14 +435,16 @@ def build_approval_handoff() -> dict:
def main() -> None:
FIXTURE_DIR.mkdir(parents=True, exist_ok=True)
FLOW_DIR.mkdir(parents=True, exist_ok=True)
flows = {
"simple_rule.json": build_simple_rule(),
"approval_handoff.json": build_approval_handoff(),
}
for filename, doc in flows.items():
path = FIXTURE_DIR / filename
path.write_text(json.dumps(doc, indent=2, ensure_ascii=False) + "\n")
print(f"wrote {path}")
payload = json.dumps(doc, indent=2, ensure_ascii=False) + "\n"
for target in (FIXTURE_DIR / filename, FLOW_DIR / filename):
target.write_text(payload)
print(f"wrote {target}")
if __name__ == "__main__":