Makes the flow engine reachable from the API, which is what M3 needs before
any of it can reach the browser.
- app/flow is a package now; the prototype's watch-dir scripts and the
matplotlib/networkx visualiser are gone with their dependencies.
- Messages carry a serializable dtype instead of a live Python type, and a
port name, so the graph can speak qualified names while node functions keep
local arguments. Redis state is JSON, not pickle.
- Message names are namespaced per flow ("heating.temp"); a bare name resolves
to its own flow, a dotted one crosses flows.
- Several nodes may provide the same message: producers are a list, so fan-in
is a real edge instead of a silently dropped one.
- Flows are stored as flow.json plus node sources in a git repository, one
commit per save, with identical saves skipped so autosave stays quiet.
- Node failures are isolated and reported per node; validate() returns cycles
and unconnected inputs instead of raising deep in a run.
- Credentials live in an encrypted store and are referenced as {"$secret": …}.
- Engine events reach websocket clients through a bus, so values, node status
and execution show up live.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016WzrvW7rjQbynnhF6pxh6i
21 lines
404 B
Plaintext
21 lines
404 B
Plaintext
.vscode/*
|
|
!.vscode/extensions.json
|
|
node_modules/
|
|
/test-results/
|
|
/playwright-report/
|
|
/blob-report/
|
|
/playwright/.cache/
|
|
|
|
# Generated locally by the workspace root's scripts/setup.sh; never committed.
|
|
.env
|
|
secrets/
|
|
|
|
__pycache__/
|
|
*.py[cod]
|
|
|
|
# The local flow store (its own git repository) and the encrypted secrets file.
|
|
/backend/flow-data/
|
|
|
|
# Output of `make verify` (root Makefile).
|
|
/frontend/screenshots/
|