Commit graph

13 commits

Author SHA1 Message Date
Jonas Miederer
94f353d773 feat: minimal prod compose with watchtower auto-updates 2026-09-07 09:05:51 +00:00
Jonas Miederer
338cdcf108 feat: embedded flow-watcher in API lifespan with startup sync 2026-09-07 09:03:35 +00:00
Jonas Miederer
c65e3ed332 feat: canonical flow directory with sync engine (files are source of truth) 2026-09-07 08:59:56 +00:00
Jonas Miederer
7d5ade6b6a chore: switch to all-SQLite stack (drop Postgres service) 2026-09-07 08:39:06 +00:00
Jonas Miederer
74831483eb chore: devcontainer pre-creates as vscode, resilient postStart script 2026-09-07 05:04:41 +00:00
Jonas Miederer
0a2b73f3b4 feat: minimal frontend (run view, approvals, admin) with E2E smoke
- Tabs: Vorgaenge (run flows + history), Freigaben (decide tasks),
  Administration (Langflow link, import, deploy)
- Typed API client over vite /api proxy; tsc + vite build clean
- scripts/smoke_e2e.py: real LFX + API end-to-end, all green
- 34 backend tests green
2026-09-06 23:13:05 +00:00
Jonas Miederer
6c195bc2e7 feat: approval decisions, tenant scoping, error paths with tests
- POST /api/approvals/{id}/decision (approve starts continuation flow
  with task facts; reject closes; 404/409/422 guards)
- Tenant scoping: list filters + cross-tenant reads 404
- Error mapping covered: LFX down 503, LFX drift 502, corrupt flow 422
- 34 tests green
2026-09-06 23:06:34 +00:00
Jonas Miederer
1034206870 feat: Langflow authoring pipeline with tests
- LangflowClient (list/export, x-api-key auth, error mapping)
- import_from_langflow: export -> versioned definition -> LFX deploy
- POST /api/flows/import, GET /api/flows/langflow/available
- scripts/deploy_flow.py CLI
- 25 tests green (Langflow faked via dependency override + respx
  client tests; respx passthrough proven unreliable for LFX traffic)
2026-09-06 23:01:47 +00:00
Jonas Miederer
96c0da33c7 feat: flow runtime on LFX with tests
- LfxClient (upload/run/info/delete, typed errors, serve-key auth)
- Flows API: CRUD, versions, deploy, sync run, SSE stream proxy, runs
- Approvals callback endpoint (flow terminal-state contract)
- Runner: envelope in, status from approval side-effect (no interrupts)
- Fixture generator (lfx serializers) + simple_rule/approval_handoff
  fixtures verified against real lfx serve
- 14 tests green (real LFX subprocess + live uvicorn callback server)
2026-09-06 22:47:45 +00:00
Jonas Miederer
e178ae406d feat: flow engine data layer with tests
- SQLModel tables: flow_definitions/versions/runs, approval_tasks
- Alembic setup with autogenerate (sqlmodel types fixed via script.py.mako)
- Settings extended (shared root .env), db engine/session helpers
- pytest suite: conftest with isolated test DB, 5 model tests green
2026-09-06 22:28:53 +00:00
Jonas Miederer
2ba062c4c5 feat: compose stack in devcontainer (db, langflow, lfx)
- docker-compose.yml with app/db/langflow/lfx services and healthchecks
- Dockerfile.lfx (stateless flow runtime on :6004)
- init-db.sql (langflow + test databases)
- devcontainer.json switched to compose mode with runServices
- setup.sh waits for compose services and requires .env
2026-09-06 22:23:30 +00:00
Jonas Miederer
86fe4424e7 chore: feature branch setup with .env secrets and .env.example 2026-09-06 22:13:02 +00:00
Jonas Miederer
418318152a feat: initial project setup
- FastAPI backend (Python 3.12, uv)
- React 19 + TypeScript + Vite frontend
- Devcontainer with Node 22, Python 3.12, uv, opencode
- Basic app structure and project docs
2026-09-04 10:17:22 +00:00