feat: live HubClient with generated proto bindings

Proto codegen wired in. tools/generate.sh wraps protoc against
../fai_platform/proto/, including the well-known types (Empty,
Struct, Timestamp) so they are generated alongside fai's own
messages — protobuf 4.x doesn't ship them as importable Dart
types, so we have to generate them ourselves.

HubClient now exposes typed methods backed by real RPCs:
- healthy() — Hub.Health probe (returns false on connect refused).
- listCapabilities() — HubAdmin.ListCapabilities.
- eventLog() — HubAdmin.EventLog with type filter.
- listApprovals() — HubAdmin.ListApprovals (status filter).
- approve() / reject() — HubAdmin.DecideApproval.

Generated bindings under lib/src/generated/ are excluded from
analyze (out of our style control). protoc_plugin pinned to
22.2.0 in tools/generate.sh comment because newer plugins
generate code against protobuf 6.x, while grpc 4.x still
constrains us to protobuf 4.x.

Bumps fai_dart_sdk 0.1.0 -> 0.2.0.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
This commit is contained in:
flemming-it 2026-05-05 16:24:16 +02:00
parent d405a6a9bd
commit da10820959
26 changed files with 5364 additions and 28 deletions

View file

@ -5,10 +5,9 @@
/// directory. Used by FI Studio and any Tier-3 Dart/Flutter
/// app (DigiScout, JI, Scout, ) that wants to talk to a hub.
///
/// Status (2026-05-05): scaffold only. Generated proto bindings
/// land in `lib/src/generated/` once the codegen step is wired
/// in (`tools/generate.sh`). Until then, [HubClient] is a stub
/// type that documents the intended surface.
/// The generated protobuf bindings live under
/// `lib/src/generated/`. Re-run `tools/generate.sh` whenever the
/// platform's `.proto` files change.
library;
export 'src/hub_client.dart';