|
Some checks failed
Security / Security check (push) Failing after 2s
Empty keeps the saved flow's own project:, then general (resolved hub-side) — the wire field existed, the wrapper now exposes it. 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.