experimental_client library
Browser-safe experimental Genkit client APIs (agent client, snapshots).
These APIs are NOT covered by the package's semantic-versioning stability
guarantees. They may change or be removed in any MINOR release without a
major version bump. This is the client counterpart to
package:genkit/client.dart:
import 'package:genkit/client.dart';
import 'package:genkit/experimental_client.dart';
This is the canonical home for the browser-safe agent-client symbols. They
are also re-exported from package:genkit/experimental.dart; naming this
library (below) is what breaks the dartdoc canonicalization tie so the docs
land here rather than emitting ambiguous-reexport warnings.
To opt out of the analyzer warning on this import (you have accepted the
instability), add to your analysis_options.yaml:
analyzer:
errors:
experimental_member_use: ignore
Classes
-
AgentApi<
State> -
The transport-agnostic surface for talking to an agent. The same shape is
returned by
ai.defineAgent(...)on the server and byremoteAgent(...)on the client. -
AgentChat<
State> -
A stateful conversation with an agent. Tracks state across turns so callers
do not have to thread
snapshotId/stateby hand. -
AgentChunk<
State> -
A streamed chunk. Mirrors
GenerateResponseChunkand adds the agent fields (artifact,custom). -
AgentInterrupt<
Input, Output> -
A single tool request a turn paused on.
respond/restartare builders: they return the part to put into aresumepayload; they do not send. -
AgentResponse<
State> -
The completed result of a turn. Mirrors
GenerateResponseand adds the agent fields (snapshotId,state,artifacts). -
AgentSnapshot<
State> - A generate-style, typed veneer over a raw SessionSnapshot. Mirrors how AgentResponse wraps an AgentOutput: it delegates the snapshot's scalar fields and surfaces the aggregates (messages, artifacts) and the typed custom state (custom), while keeping the untyped wire objects reachable via sessionState / raw.
- AgentTransport
-
The pluggable backend the agent-client core runs over. Implementations
exist for the in-process server agent (driving the agent action directly)
and for the HTTP
remoteAgent(driving stream/run calls). -
AgentTurn<
State> -
A single in-flight turn — the analog of
generateStream's{stream, response}, plus abort. -
DetachedTask<
State> - A handle to a background (detached) task.
Functions
-
applyPatch(
Object? document, JsonPatch patch) → Object? -
Applies an RFC 6902 JSON Patch to
document, returning the new value. -
diff(
Object? from, Object? to) → JsonPatch -
Computes an RFC 6902 JSON Patch that transforms
fromintoto. -
remoteAgent<
State> ({required String url, String? getSnapshotUrl, String? abortUrl, HeadersResolver? headers, AgentStateManagement? stateManagement, SchemanticType< State> ? stateSchema, Client? httpClient}) → AgentApi<State> - Creates a typed client for talking to a Genkit agent over HTTP.
Typedefs
-
HeadersResolver
= FutureOr<
Map< Function()String, String> ?> - Resolves request headers, either statically or per request.
-
JsonPatch
= List<
JsonPatchOperationMap> - An RFC 6902 JSON Patch: an ordered list of operations.
-
JsonPatchOperationMap
= Map<
String, dynamic> -
A single RFC 6902 (JSON Patch) operation, as a plain JSON map:
{op, path, from?, value?}. -
TurnStream
= ({Future<
AgentOutput> output, Stream<AgentStreamChunk> stream}) -
The streamed result of a single turn: incremental
streamchunks plus anoutputfuture for the final, non-throwing AgentOutput (failures resolve withfinishReason: 'failed').
Exceptions / Errors
-
AgentError<
State> - Thrown when a turn fails. Carries the last-good state so the session is recoverable.