aimarket_agent library
AI Market Protocol v2 Consumer SDK for Dart/Flutter.
Use this to embed marketplace economy into Flutter desktop apps (macOS/Windows/Linux), Dart servers, and any Dart application.
Quick Start
import 'package:aimarket_agent/aimarket_agent.dart';
void main() async {
final agent = AimarketAgent(
hubUrl: 'https://modelmarket.dev',
walletKey: 'your-wallet-private-key-hex',
);
// Phase 1: Discover career capabilities
final plan = await agent.discover(
intent: 'ATS scoring rules for fintech roles',
budget: 1.00,
category: 'career',
);
// Phase 2: Open a $5 channel on Base
final channel = await agent.openChannel(5.00, token: 'USDT', chain: 'base');
// Phase 3: Invoke the top result
final result = await agent.invoke(
capabilityId: plan.first.capability.id,
input: {'target_role': 'Senior PM', 'industry': 'fintech'},
channelId: channel.id,
);
// Phase 4: Settle the channel
await agent.closeChannel(channel.id);
// Phase 5: Verify TEE receipt (optional)
if (result.teeReceipt != null) {
final ok = agent.verifyTeeReceipt(
result.teeReceipt!,
jsonEncode({'target_role': 'Senior PM'}),
jsonEncode(result.result),
);
print('TEE verified: $ok');
}
print('Spent: \$${result.priceUsd}');
agent.dispose();
}
Exports
This library re-exports all public types from its modules:
Core Agent
- AimarketAgent — the main consumer agent (5-phase lifecycle)
- AimarketAgentConfig — configures timeout, retries, TEE, etc.
- AimarketException — base exception for protocol errors
- AimarketNetworkException — network-level errors (retried)
- AimarketPaymentException — payment failures (402)
- AimarketSafetyException — safety gate blocks (403)
Data Models
- Capability — a discoverable AI function on the marketplace
- Channel — a pre-funded payment channel
- InvokeResult — result of a capability invocation
- TeeAttestation — TEE attestation (enclave proof)
- TeeReceipt — TEE execution receipt
- Settlement — channel close summary
- PlanStep — discovery result with relevance score
- BillOfMaterials — full interaction trace
Signing & Crypto
- MarketSigner — Ed25519 signing (HMAC-SHA256 stub)
- Eip712Domain — EIP-712 domain parameters
- TypedData — typed structured data for EIP-712
- jsonRoundTrip — round-trip serialization helper
TEE Verification
- TeeVerifier — verifies attestations and receipts
- TeeVerificationResult — detailed verification outcome
- TrustedHashCache — TTL-cached trusted code hashes
- TeePlatform — enum of supported TEE backends
Dependencies
httpfor HTTP/HTTPS transportcryptofor SHA-256 hashing and HMAC
Platform Support
| Platform | Status |
|---|---|
| Flutter macOS | Full |
| Flutter Windows | Full |
| Flutter Linux | Full |
| Dart CLI | Full |
| Flutter Web | Partial (CORS dependent) |
| Flutter iOS/Android | Untested |
Classes
- AimarketAgent
- AI Market Protocol v2 consumer.
- AimarketAgentConfig
- Configuration for AimarketAgent behavior.
- BillOfMaterials
- Bill of Materials — full trace of a marketplace interaction.
- Capability
- A discoverable capability from the marketplace.
- Channel
- A pre-funded payment channel.
- Eip712Domain
- InvokeResult
- Result of a capability invocation.
- MarketSigner
- PlanStep
- A plan step from discovery — capability matched to an intent.
- SearchResponse
- A hub search/discovery response — the typed shape returned by GET /ai-market/v2/search.
- Settlement
- Settlement returned after closing a payment channel.
- TeeAttestation
- TEE attestation proving code runs in a secure enclave.
- TeePlatform
- Recognized TEE platform identifiers.
- TeeReceipt
- Receipt proving execution happened inside a TEE.
- TeeVerificationResult
- Result of a TEE attestation verification with detailed failure reasons.
- TeeVerifier
- Verifies TEE attestations and receipts client-side.
- TrustedHashCache
- Caches trusted code hashes fetched from the hub, with TTL expiry.
- TypedData
Constants
- debitTypehashHeader → const String
- escrowContractName → const String
- escrowContractVersion → const String
- payerProofChannelOpen → const String
- payerProofDomain → const String
- payerProofVersion → const int
Functions
-
canonicalProofAmountCents(
num amountUsd) → int - Deposit amount as the integer cents both ledgers bill in.
-
canonicalProofChain(
String chain) → String - Canonical chain id: chain names are ASCII and case-free.
-
canonicalProofPayer(
String payer) → String - Canonical payer: EIP-55 mixed case is a checksum, not identity, so an address lowercases.
-
canonicalProofTxHash(
String txHash) → String - Canonical transaction id.
-
channelOpenProofHash(
{required String chain, required String txHash, required String payer, required num amountUsd}) → Uint8List - The EIP-191 digest: keccak256("\x19Ethereum Signed Message:\n" + len + message).
-
channelOpenProofMessage(
{required String chain, required String txHash, required String payer, required num amountUsd}) → String - The exact text the paying wallet signs.
-
computeDebitDigest(
{required String channelId, required String hub, required String token, required BigInt amount, required String receiptId, required BigInt nonce, required int deadline, int chainId = 8453, String verifyingContract = '0x0000000000000000000000000000000000000000'}) → Uint8List - Compute EIP-712 digest for a debit authorization.
-
jsonRoundTrip<
T> (JsonFactory< T> fromJson, Map<String, dynamic> input) → bool - Verify that a model round-trips through JSON without field loss.
-
signChannelOpenProof(
{required String privateKeyHex, required String chain, required String txHash, required String payer, required num amountUsd}) → String -
Sign the challenge with the paying wallet's key. Returns
0x-prefixed r‖s‖v (65 bytes).
Typedefs
-
JsonFactory<
T> = T Function(Map< String, dynamic> ) - JSON serialization round-trip helper for models.
Exceptions / Errors
- AimarketException
- Base exception for AI Market Protocol errors.
- AimarketNetworkException
- Network-level error: timeout, connection refused, DNS failure, etc.
- AimarketPaymentException
- Payment failure: depleted channel, insufficient funds, or expired credit.
- AimarketSafetyException
- Safety gate blocked the invocation.