agents_flutter
Flutter integration for the agents framework: a preconfigured harness agent, device-capability context providers and tools, chat history persistence, and configurable model profiles.
0.8.0
jamiewest/agents
What this package is like to depend on
Last release 23 days ago
31 Jul 2026
Too new to tell
only 1 release windows
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
0 months old
7 releases · first in 2026
7 releases in the last 12 months
see the full history below
Release timeline
7 releases · Jul 2026 to Jul 2026Releases
latest 7-
0.8.031 Jul 2026Release notes
Open source →- Breaking: requires
agents: ^2.0.0. Inherits the workflow changes:streamAsync/resumeStreamAsyncnow return a live run driven in the background (watchStreamingRun.watchStreamAsync()rather than readingoutgoingEventsstraight after the await), external responses route by request id back to the issuing executor and throw when they cannot be routed, andWireMarshaller.valueConverterslets hosts checkpoint payloads outside the JSON model. - Breaking: requires
extensions: ^0.6.0andextensions_flutter: ^0.5.0. Inherits the AI function-invocation change: the invocation loop withholds function declarations on a final tool-free round trip instead of returning unanswered tool calls, and throws oncemaximumConsecutiveErrorsPerRequestis exceeded rather than returning a partial response. Agents configured with a low iteration or error limit will see one extra provider call, or a thrown error where a partial response used to come back. - Breaking: requires
geocoding: ^5.0.0, which moved its top-level functions onto aGeocodingclass. TheReverseGeocoderandForwardGeocoderdefaults are now the new top-levelreverseGeocodeCoordinatesandforwardGeocodeAddressfunctions in this package, which wrap a sharedGeocodinginstance. Injected fakes are unaffected, and thePlacemark/Locationtypes are unchanged. Reverse geocoding now also works on macOS, via the newgeocoding_darwinimplementation. - Breaking: requires
anthropic_sdk_dart: ^6.0.0, whose types appear in the configured-chat-client factory surface. - Verified against the current releases of the unchanged constraints,
including
background_downloader9.5.7,connectivity_plus7.3.1,intl0.20.3,network_info_plus8.2.1,timezone0.11.1, andwakelock_plus1.7.0.
- Breaking: requires
-
0.7.030 Jul 2026Release notes
Open source →- Breaking:
ConfiguredChatClientFactory.customClientResolvergains anAgentScope? scopeparameter, forwarded fromcreateChatClient. Host resolvers can now key per-conversation state (for example a local model's KV-cache lineage) to the conversation a client serves, removing the need for scope-aware factory subclasses. - Removed the empty, never-exported
src/ai_agent_provider.dartplaceholder. - New
telemetry/subsystem, folded in from the downstream app:UsageStore(the durableusage_recordsledger implementingUsageRecordSink, now living besideUsageTrackingChatClient),AgentRunTelemetryStorewith crash recovery (recoverInterrupted),AgentRunScope(anAgentScopecarrying agent and run ids for usage attribution), andAgentCenterOverviewtime-series aggregation over the two ledgers. - New
activity/subsystem:AppActivityMonitor(app-wide idle signal; hosts report foreground transitions viareportForeground(bool)— a deliberate change from the app'sreportLifecycle(AppLifecycleState)so the class stays free of Flutter imports) and theToolActivityregistry withToolActivityTrackingChatClient. a2a/gains the host side to match its existing pairing client:A2AHostService(ashelf-backed HTTP server exposing local configured agents to paired devices, with single-use pairing tokens, SHA-256 bearer authorization, and per-caller session isolation) behind an io/stub conditional facade, plusNetworkSharingSettings. Addsshelfandpooldependencies (server platforms only at runtime; the web stub reports hosting unsupported).web/gains the search side folded in from the app:SearchUrlWebSearchSource(query anyq=-style endpoint; JSON/SearXNG or HTML parsing with redirect unwrapping),WebSearchSettings(SecretStore-backed multi-endpoint config with categories and user-agent profiles),WebSearchTraceLog+TracingWebPageLoader(opt-in HTTP tracing), andWebPageHtmlRenderer(renamed from the app'sWebPageRendererto avoid colliding with this package'sweb_page_renderer.dartmarkdown helpers) withHeadlessWebViewHtmlRenderer— a reimplementation of the app's webview_flutter renderer onflutter_inappwebview, gated by a staticisSupported(Android/iOS/macOS/Windows). The app no longer needswebview_flutter; one WebView stack serves both loading and rendering.- Settings colocated with the subsystems they configure:
PushoverSettings(→pushover/),EmbeddingSettings(→memory/, it is theMemoryScorerhanded toRecordStoreVectorStore),ThinkingSettings(→configured_agents/), and a newuser_profile/capability folder (UserProfileSettings+UserProfileContextProvider). Persisted key literals are unchanged (including historicalagents_app.prefixes) so existing installs keep their data. activity/also gains the chat terminal subsystem, reworked during the fold-in from an xterm-backed buffer to a terminal-widget-free design:ChatTerminalSessionrecords a capped ring of semanticTerminalEvents (command started / output chunk / completed / failed / cleared) with a sync broadcastonEventstream andeventsreplay, theTerminalActivityregistry keys sessions per conversation (delegate scopes fold onto the parent), andTerminalMirroringShellExecutormirrors anyShellExecutorinto a session. Presentation — prompt markers, ANSI colors, CRLF, status lines — is the host renderer's job (the reference app binds events to an xterm buffer).- New
package:agents_flutter/chat_provider.dartentry point: the chat view-model contract folded in from the downstream app —LlmProvider, the UI-facingChatMessage/Attachment/MessageOrigin/ToolApprovaltypes,LlmException,TokenSmoother,AgentLlmProvider(bridges anAIAgentinto the contract with tool-approval pause/resume, run telemetry, and activity reporting), andEchoLlmProvider(renamed from the app'sEchoProvider; useful as a UI test double). It is a separate library, not part of the main barrel, because the UI-facingChatMessagewould collide withpackage:extensions/ai.dart's wire-levelChatMessagein any file importing both. - New
conversations/subsystem: theConversation/ConversationSession/Channeldomain,ConversationStore+ConversationSessionStore+ChannelStore(RecordStore-backed, collection names unchanged from the app),ConversationService, theChatsQueryfilter model, theChatTitleSummarizerbackground service, and anaddConversations()/addChatTitleSummarizer(residentTitleClient:)registration pair. - New
tasks/subsystem:AgentTask(+ recurrence),AgentTaskStore,TaskSchedulerService, andaddTaskScheduler(). The scheduler stays a plain singleton the host starts explicitly. chat_history/gainsChatTranscriptStore, co-located withChatMessageCodec/ChatMessageRecordswhose record shape it reads; a contract test now pins the record field literals and the write→read round-trip.logging/gainsPromptLogandPromptLoggingChatClient(+renderRequest);configured_agents/gainsLoggingConfiguredChatClientFactory(prompt capture, usage attribution, tool-activity tracking in one decorator stack) andchooseLocalWarmupTargetfor pre-loading a local model at startup. The chat-client decorator is namedPromptLoggingChatClient— not the app's originalLoggingChatClient— to avoid colliding withpackage:extensions/ai.dart's class of that name.
- Breaking:
-
0.6.129 Jul 2026Release notes
Open source →HeadlessWebViewPageLoaderaccepts an optionaluserAgent, sent with every page load in place of the platform WebView's default. Hosts opt in explicitly (for example from a user-managed profile); when omitted, behavior is unchanged and the system default is sent.
-
0.3.028 Jul 2026Release notes
Open source →- Add vendor-neutral local web search and direct page-opening tools for the
Flutter harness.
open_web_pagerenders JavaScript in an isolated, incognito headless WebView, extracts readable text and metadata, and applies a configurable public-network navigation policy. - A configured local search source replaces the hosted web-search marker. A
page loader may instead add only
open_web_pagewhile retaining hosted search. Both retain the existing per-agent web-search access gate. - Add native headless page loading on Android, iOS, macOS, and Windows using
flutter_inappwebview, with structured timeout, navigation, HTTP, loading, empty-content, and challenge-detection results. Flutter web reports the capability as unsupported.
- Add vendor-neutral local web search and direct page-opening tools for the
Flutter harness.
-
0.2.128 Jul 2026Release notes
Open source →- Pushover as a harness capability with per-agent gating:
FlutterHarnessAgentOptions.pushoverClient(pluspushoverToolOptions) — when a host attaches a configuredPushoverClient, the harness adds the Pushover tools. Client-gated rather than flag-gated: the tools send real notifications, so they exist exactly when the host attached a client.AgentAccessConfig.enablePushover— opt-in per saved agent,falseby default.ConfiguredAgentFactorystrips the client from agents that have an access record without the opt-in, wherever the client was attached; agents without an access record keep the harness default.createPushoverToolsandPushoverToolOptions— builds the send, quota, and receipt tool set from one configuration.
- Pushover as a harness capability with per-agent gating:
-
0.2.028 Jul 2026Release notes
Open source →- Require
agents: ^1.6.0, including the new live shell output stream and callback APIs and persistent-shell stderr capture.
- Require
-
0.1.028 Jul 2026Release notes
Open source →First public release. Flutter integration layer for the
agentsframework.FlutterHarnessAgent— a one-callHarnessAgentpreconfigured with the Flutter capabilities, compaction, function invocation, and per-call chat history persistence. Reachable from aChatClientviaasFlutterHarnessAgent(...), or through dependency injection withaddFlutterHarness(...)/useFlutterHarnessAgent(...).- Device-capability context providers and tools, each registrable on a
ServiceCollectionor directly onChatClientAgentOptions:- Temporal —
TemporalContextProviderplus theget_current_timetool. - Connectivity —
ConnectivityContextProvider(withConnectivityMonitor) plus theget_connectivitytool. - Device and app info —
DeviceContextProvider,get_device_info, andget_app_info, withDeviceInfoHostedServiceandPackageInfoHostedServicefor the DI path. - Location —
LocationContextProvider,get_current_location, andgeocode_address. - Network —
NetworkContextProviderandget_current_network_info. - Wake lock — the
set_wake_locktool. - Pushover —
PushoverClientplus thesend_pushover_notification,get_pushover_limits, andcheck_pushover_receipttools, registrable withaddPushover(...). Credentials stay out of the tool schema, so a model chooses what a notification says but never who receives it. Supports multipart image attachments, resolved from a model-supplied reference through a host-providedPushoverAttachmentResolver, and end-to-end encryption viaPushoverAesEncryptor.
- Temporal —
- Configured agents (
configured_agents/):ConfiguredAgentsManager,ConfiguredAgentFactory,AgentScope, and persistentAgentConfigurationStore/ModelSourceStorefor defining and switching agents at runtime. - Model profiles (
configured_agents/model_profile/): per-model chat and tool-call formats (Hermes, Llama 3, Mistral, LFM2), streaming tool-call decoding, think-tag filtering, GGUF metadata inspection, andOpenAiCompatibleChatClient. - Chat history persistence:
FlutterChatHistoryProvider,ChatMessageCodec, and stale tool-result redaction. - Storage and memory built on
sembast:RecordStorewith in-memory and sembast backends,RecordStoreAgentFileStore, andRecordStoreVectorStorewith a memory scorer. - Downloads:
DownloadServicebacked bybackground_downloader, plus a Hugging Face API client and model downloader. - Logging:
AppLogStore, anAppLogStoreLoggerProvider, andAgentTrafficLoggingAgentfor recording agent request/response traffic. - Chat client decorators:
UsageTrackingChatClientandTextFileInliningChatClient. - A2A pairing helpers under
a2a/. - Adaptive layout widgets under
layout/.