Wraps HubAdmin/PullSystemAiModelStream: yields the backend's own status and byte counts per layer, and hands the terminal response to onFinished, whose errorKind stays the failure signal. Stubs regenerated from the protos (additive only). 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 | ||
chain_client_sdk (Dart)
gRPC client SDK for the Ch∆In hub. Used by Ch∆In Studio
(Tier-2 generic GUI) and any Tier-3 Dart/Flutter domain app
that wants to talk to a running chain serve.
One of the three SDK families documented in the platform repo
(docs/architecture/client-sdks.md):
chain-module-sdk(Rust) — flow moduleschain-plugin-sdk(Rust) — Studio pluginschain_client_sdk(Dart) — clients ← this package
Dir / repo carries the _dart / -dart language suffix
(fai_chain_client_sdk_dart / chain-client-sdk-dart); the
Dart package name itself does not (Dart-land doesn't need the
suffix).
Status: functional and in production use by Studio. The generated proto bindings (
lib/src/generated/chain/v1/) are committed and pinned to the platform's wire protocol (chain.v1).HubClientexposes the full Hub + HubAdmin surface — flow execution (submitincl.detach,submitStreaming,runSavedFlow), detached-invocation status/result/cancel, saved flows, store + module management, audit log (eventLog,streamEvents,verifyEventChain), approvals, federation admin, MCP/n8n endpoint management, System-AI administration, and bearer-token auth (HubClient(authToken:)). Works over native gRPC (desktop / CLI) and gRPC-Web (browser) via conditional channel factories.Not yet published to pub.dev (
publish_to: none) — consume it as a path or git dependency.
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_chain_client_sdk_dart/
├── lib/
│ ├── chain_client_sdk.dart # Public API
│ └── src/
│ ├── hub_client.dart # Typed client wrapper (~55 methods)
│ ├── channel_factory_io.dart # Native ClientChannel (HTTP/2)
│ ├── channel_factory_web.dart # GrpcWebClientChannel.xhr (HTTP/1.1)
│ └── generated/ # protoc output (committed; pinned to platform proto)
├── tools/
│ └── generate.sh # Wraps `protoc --dart_out=...` against ../fai_chain/proto
├── example/
└── pubspec.yaml
Repo placement
Published as fai/chain-client-sdk-dart on Forgejo
(git.flemming.ai).
Versioning
Tracks the platform's wire-protocol version, not the platform
binary version. As long as chain.v1 is current, this SDK
stays at 0.x (will move to 1.0 once the API stabilises);
when a chain.v2 wire package lands, a 2.x SDK ships in
parallel during the transition.