Record the connectors and what is still read-only
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LF61rxW1FG5YCD2J9YqjY
This commit is contained in:
+10
@@ -86,6 +86,16 @@ Deferring because out of scope is fine, but don't mention deferring than.
|
||||
`crypto.hash is not a function` — Vite 7 wants Node 20.12+ and the host has 18. The
|
||||
Docker image builds fine, so it only bites local bundling; `bunx tsc` still type-checks.
|
||||
|
||||
- FEAT/NODE: the connectors only read. Enable the write paths with someone watching:
|
||||
WF-RAC `setAirconStat` (needs an operatorId registered with the unit first, which is
|
||||
itself a write) and Art-Net `transmit`.
|
||||
- FEAT/NODE: the second WF-RAC unit (the one Node-RED addresses with operatorId "0")
|
||||
closes the connection on an anonymous read. It likely wants an account registered;
|
||||
the first unit answers without one.
|
||||
- CHORE/NODE: `wfrac` reports `mode` as "unknown" while the unit is off, because the
|
||||
mode bits hold a value outside the known set. Faithful to the reference decoder, but
|
||||
"off" would read better.
|
||||
|
||||
## Blocked
|
||||
|
||||
- FEAT/UI: a "Bug" icon on the node error bubble opening the logs panel at that node's
|
||||
|
||||
@@ -52,6 +52,11 @@ external interfaces. See `docs/architecture/structure.canvas` → *Backend – M
|
||||
packages found through the `fluksio.node_types` entry point group; the
|
||||
contract is documented in `docs/connectors/` with a working skeleton at
|
||||
`connector-skeleton/`. The registry follows later
|
||||
- [x] First real connectors written against that contract from outside the engine:
|
||||
WF-RAC aircon, calendar, UniFi presence and Art-Net, in `connectors/`.
|
||||
Built by `make connectors` and installed into the image. Reading only for
|
||||
now — the aircon package cannot produce a command and Art-Net keeps its
|
||||
packets off the wire until `transmit` is switched on
|
||||
- [x] Node lifecycle as a protocol (`start`/`stop`/`report_health` on `Node`),
|
||||
replacing the controller's per-type isinstance chains — the same hooks a
|
||||
connector implements, validated on the built-in nodes first
|
||||
|
||||
@@ -40,6 +40,15 @@ RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
|
||||
uv sync --frozen --package app
|
||||
|
||||
# Connectors are ordinary installed packages found through the
|
||||
# `fluksio.node_types` entry point. `make connectors` builds them into here;
|
||||
# an image with none is the normal case.
|
||||
COPY ./backend/connector-wheels /tmp/connector-wheels
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
sh -c 'ls /tmp/connector-wheels/*.whl >/dev/null 2>&1 \
|
||||
&& uv pip install --python /app/.venv/bin/python /tmp/connector-wheels/*.whl \
|
||||
|| echo "no connectors bundled"'
|
||||
|
||||
WORKDIR /app/backend/
|
||||
|
||||
# Single worker on purpose: the process hosts the flow engine, and a second
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
*.whl
|
||||
@@ -0,0 +1,3 @@
|
||||
Connector wheels built by `make connectors` at the workspace root land here and
|
||||
are installed into the image. Kept empty in git: a connector is an installed
|
||||
package, not part of the app.
|
||||
Reference in New Issue
Block a user