gRPC client SDK for the F∆I Platform hub (Dart/Flutter)
Find a file
flemming-it 73dbdc16ef feat: store + install + channel status (v0.3.0)
Catches the Dart bindings up to the platform's gRPC additions:
  * `searchStore({query, category, tag, status, limit})` — wraps
    HubAdmin.SearchStore so Studio can build a Store browser
    page.
  * `installModule({source, expectedSha256})` — wraps
    HubAdmin.InstallModule so the operator can one-click install
    a `.fai` bundle from the UI.
  * `channelStatus()` — new HubAdmin.ChannelStatus RPC. Returns
    active channel name + per-channel running flag + endpoint.

Re-exports the new proto types (StoreEntry,
StoreSearchResponse, InstallModuleResponse, ChannelStatusResponse,
ChannelEntry) so callers don't import protobuf directly.

LoggedEvent gains a `detail` field (free-form JSON string)
upstream; the regenerated bindings expose it without further
work — Studio's audit drill-down renders it pretty-printed.

Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
2026-05-07 11:54:30 +02:00
example feat: fai_dart_sdk scaffold 2026-05-05 14:19:39 +02:00
lib feat: store + install + channel status (v0.3.0) 2026-05-07 11:54:30 +02:00
test feat: live HubClient with generated proto bindings 2026-05-05 16:24:16 +02:00
tools feat: live HubClient with generated proto bindings 2026-05-05 16:24:16 +02:00
.gitignore feat: fai_dart_sdk scaffold 2026-05-05 14:19:39 +02:00
analysis_options.yaml feat: live HubClient with generated proto bindings 2026-05-05 16:24:16 +02:00
CHANGELOG.md feat: fai_dart_sdk scaffold 2026-05-05 14:19:39 +02:00
pubspec.yaml feat: store + install + channel status (v0.3.0) 2026-05-07 11:54:30 +02:00
README.md feat: fai_dart_sdk scaffold 2026-05-05 14:19:39 +02:00

fai_dart_sdk

gRPC client SDK for the F∆I Platform hub. Used by F∆I Studio (Tier-2 generic GUI) and any Tier-3 Dart/Flutter domain app (DigiScout, J∆I, Scout, …) that wants to talk to a running fai serve.

Status (2026-05-05): scaffold. Public surface (HubClient, HubEndpoint) is committed; generated proto bindings land in a follow-up commit once the codegen step is wired in. Until then, downstream apps can compile against the stub and Studio uses mock data.

Why a separate SDK package

The platform hub speaks gRPC. Each Dart consumer (Studio plus each Tier-3 domain app) would otherwise re-generate proto bindings independently and write near-identical client boilerplate. This package centralises that work:

  • One source of generated proto bindings.
  • One typed HubClient wrapper with helpers.
  • One place to bump when the wire protocol evolves.

Layout

fai_dart_sdk/
├── lib/
│   ├── fai_dart_sdk.dart          # Public API
│   └── src/
│       ├── hub_client.dart        # Typed client wrapper
│       └── generated/             # protoc output (committed; pinned to platform tag)
├── tools/
│   └── generate.sh                # Wraps `protoc --dart_out=...` against ../fai_platform/proto
├── example/
└── pubspec.yaml

Repo placement

Will be published as fai/dart-sdk on Forgejo (git.flemming.ws). The local directory fai_dart_sdk/ follows the established fai_platform/ layout convention.

Versioning

Tracks the platform's wire-protocol version, not the platform binary version. As long as fai:platform@1.x is current, this SDK stays at 0.x (will move to 1.0 once API stabilises); when fai:platform@2.0 lands, a 2.x SDK ships in parallel during the transition.