|
Some checks failed
Security / Security check (push) Failing after 2s
Generated bindings for the schema_version 3 / ModuleField proto addition in fai_platform commit f8b364e. Studio's flow editor can now ask the hub for declared inputs and outputs per module, with i18n descriptions, instead of parsing references out of the flow YAML. Bumps fai_client_sdk to 0.18.0. Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com> |
||
|---|---|---|
| .forgejo/workflows | ||
| .githooks | ||
| example | ||
| lib | ||
| test | ||
| tools | ||
| .gitignore | ||
| analysis_options.yaml | ||
| CHANGELOG.md | ||
| pubspec.yaml | ||
| README.md | ||
fai_client_sdk (Dart)
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
that wants to talk to a running fai serve.
One of the three SDK families documented in
fai/platform/docs/architecture/sdks.md:
fai-module-sdk(Rust) — flow modulesfai-plugin-sdk(Rust) — Studio pluginsfai_client_sdk(Dart) — clients ← this package
Dir / repo carries the _dart / -dart language suffix
(fai_client_sdk_dart / client-sdk-dart); the Dart package
name itself does not (Dart-land doesn't need the suffix).
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
HubClientwrapper with helpers. - One place to bump when the wire protocol evolves.
Layout
fai_client_sdk_dart/
├── lib/
│ ├── fai_client_sdk.dart # Public API
│ └── src/
│ ├── hub_client.dart # Typed client wrapper
│ ├── channel_factory_io.dart # Native ClientChannel (HTTP/2)
│ ├── channel_factory_web.dart # GrpcWebClientChannel.xhr (HTTP/1.1)
│ └── generated/ # protoc output (committed; pinned to platform tag)
├── tools/
│ └── generate.sh # Wraps `protoc --dart_out=...` against ../fai_platform/proto
├── example/
└── pubspec.yaml
Repo placement
Published as fai/client-sdk-dart on Forgejo
(git.flemming.ai).
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.