amba 4.0.2
amba: ^4.0.2 copied to clipboard
amba SDK for Flutter — the full 4.0 surface (auth, users, sessions, sync, leagues + 29 more namespaces) for the agent-native backend-as-a-service.
Changelog #
All notable changes to the amba Flutter SDK are documented here.
Format follows Keep a Changelog;
versions follow SemVer.
4.0.2 — 2026-05-27 #
Version-alignment release across every published Amba package. Brings
the infra-tier packages (@layers/amba, @layers/amba-shared,
@layers/amba-mcp — previously on 1.x) onto the same 4.x track as the
SDKs so customers can pin a single version everywhere. No surface or
behavior changes in this SDK.
Removed from the package family in this release: the deprecated
@layers/amba-functions and @layers/amba-client packages were
unpublished from npm. Amba functions are plain ES modules with the
standard export default { async fetch(req, env, ctx) } shape — no
wrapper. See docs.amba.dev/functions/runtime
for the full contract.
4.0.1 — 2026-05-26 #
Version-alignment release across every Amba SDK. No surface or behavior
changes — bumps every SDK (web, node, react, react-native, expo, core,
kotlin, swift, flutter, unity) to 4.0.1 so customers can pin to a single
version across stacks. See sdks/CANONICAL_API.md
for the 4.0 surface.
4.0.0 — 2026-05-25 #
Coordinated 4.0 release across every Amba SDK. All 9 SDKs ship the same
surface on the same day; see the canonical spec at
sdks/CANONICAL_API.md for the per-method contract.
Breaking #
Amba.messaging.getMessage(messageId)now takes(conversationId, messageId)and returnsMessage?(null when the message can't be found). The pre-4.0 single-arg form called a non-existent FFI symbol — every call threwArgumentErrorat dispatch, so no working customer code can be affected.
Added — net-new namespaces #
Amba.users—get(userId?),update(patch, {userId?}).Amba.sessions—list(),revoke(sessionId). List/revoke the customer-defined app sessions; distinct from the auth JWT envelope.Amba.sync—pushChanges([SyncChange]),pullChanges(entityType, checkpointToken?). Offline change replay with server-wins conflicts.Amba.leagues—me(),cohort(). Tiered weekly leaderboard cohorts; cohort listings are anonymised (display name only, no user ids).
Added — net-new methods on existing namespaces #
Amba.auth.requestMagicLink(email),verifyMagicLink(token),linkAccount(provider, credential).Amba.collections.findNearest(name, vectorField:, queryVector:, k:, filter?)andcount(name, filter?).Amba.storage.list(prefix?),delete(assetId),download(assetId)(returnsUint8List— the Rust core base64-encodes inside a{data:"…"}envelope to keep the FFI ABI string-only; the wrapper decodes on the platform side).Amba.messaging.createConversation({participants, conversationType?, name?}),listMessages(conversationId, {limit?, offset?}),markRead(conversationId).Amba.friends.sendRequest(userId),acceptRequest(friendshipId),declineRequest(friendshipId).Amba.catalog.get(id).
Fixed #
Amba.messaging.getMessage— the Rust core (Phase A) added the long-missingamba_messaging_get_message(conv_id, msg_id)symbol; the wrapper now actually dispatches instead ofArgumentError'ing out. Returnsnullwhen the message isn't in the first 5,000 entries of the conversation (the helper paginateslist_messagesinternally since the server has no GET-by-id route).
Test coverage #
- New tests for every method added above, including the OTP path (zero coverage pre-4.0).
1.0.2 — 2026-05-20 #
Added #
Amba.diagnostics.ping()— wire-verify primitive. Call once afterAmba.configure(...)to confirm the SDK is talking to the right project with the right API key in the right environment. Returns aPingResultwhose fields (serverProjectId,environment,keyFingerprint,latencyMs) are all server-decided, so comparingserverProjectIdagainst the configured project id catches "wrong key in .env" silent failures on the spot. Mirrors the TypeScript SDKs'Amba.diagnostics.ping()shape (added in 1.0.0).dart:developer log()calls from the SDK now usename: "amba-sdk", so Flutter DevTools /flutter logsfiltering on that name surfaces amba's own diagnostics without dragging in app-side log noise. The SDK never callsprint().
Known limitations #
- The published xcframework still ships the iOS device slice only (arm64) — unchanged from 1.0.1. Running on an iOS simulator requires building a simulator slice locally. iOS device builds, App Store archives, and Android (all four ABIs) are fully supported out-of-box. The simulator-slice download follow-up tracked in 1.0.1 is still pending.
1.0.1 — 2026-05-20 #
Fixed #
- Bundled prebuilt native binaries for Android (arm64-v8a, armeabi-v7a,
x86_64, x86) and iOS device (arm64) so
flutter build apkandflutter build ipasucceed without any local build step. - Added
android/src/main/kotlin/com/layers/amba/AmbaPlugin.ktandios/Classes/AmbaPlugin.swiftplugin stubs required by Flutter's plugin registration mechanism. - Added
android/build.gradle,android/src/main/AndroidManifest.xml, andios/amba.podspecneeded for Flutter to discover and link the plugin. - Fixed
Amba.versionconstant to match the published package version.
Known limitations #
- The published xcframework ships the iOS device slice only (arm64).
Running on an iOS simulator requires building a simulator slice
locally — a follow-up release will add an automated podspec
prepare_commandthat downloads the matching slice onpod install. iOS device builds, App Store archives, and Android (all four ABIs) are fully supported out-of-box.
1.0.0 — 2026-05-16 #
Initial public release of the amba Flutter SDK on pub.dev.
Added #
Ambaclient class wrapping the Amba backend API for Flutter apps: configure with project id + client key; track events; anonymous sign-in; authenticated sign-in via magic link; collection CRUD; AI prompt invocation.- Smoke test fixtures under
test/integration/exercising the public surface against a live tenant.