@agent-fuel/sdk 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +15 -2
- package/dist/idl/reputation.cjs +128 -1
- package/dist/idl/reputation.cjs.map +1 -1
- package/dist/idl/reputation.d.cts +128 -1
- package/dist/idl/reputation.d.ts +128 -1
- package/dist/idl/reputation.js +128 -1
- package/dist/idl/reputation.js.map +1 -1
- package/dist/index.cjs +258 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +52 -1
- package/dist/index.d.ts +52 -1
- package/dist/index.js +250 -2
- package/dist/index.js.map +1 -1
- package/package.json +6 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/decoders.ts","../src/errors.ts","../src/guardrails.ts","../src/live.ts","../src/idl/reputation.json","../src/idl/credit-vault.json","../src/program-ids.ts","../src/pda.ts","../src/programs.ts","../src/client.ts","../src/x402.ts"],"names":["PublicKey"],"mappings":"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","file":"index.js","sourcesContent":["import { PublicKey, SystemProgram, TransactionInstruction } from \"@solana/web3.js\";\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\",\n);\n\n// Rolling hourly window in slots, at Solana's nominal 400 ms slot time.\n// Mirrors `SLOTS_PER_HOUR` in programs/credit_vault/src/state.rs.\nexport const SLOTS_PER_HOUR = 9_000;\n\nexport function getAssociatedTokenAddress(mint: PublicKey, owner: PublicKey): PublicKey {\n const [ata] = PublicKey.findProgramAddressSync(\n [owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n ASSOCIATED_TOKEN_PROGRAM_ID,\n );\n return ata;\n}\n\n// Variant 1 (`CreateIdempotent`) of the Associated Token Account program: a\n// no-op when the ATA already exists, otherwise creates it and assigns the\n// payer's lamports for rent. Safe to always prepend before a spend so callers\n// don't have to pre-flight whether the service has ever received USDC.\nexport function createAssociatedTokenAccountIdempotentInstruction(\n payer: PublicKey,\n ata: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n): TransactionInstruction {\n return new TransactionInstruction({\n programId: ASSOCIATED_TOKEN_PROGRAM_ID,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: ata, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n ],\n data: Buffer.from([1]),\n });\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport type BN from \"bn.js\";\nimport type { RawCreditVault, RawServiceRegistry, RawSpendPolicy } from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n ServiceCategory,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n} from \"./types.js\";\n\n// Anchor returns u64 fields as BN. `.toNumber()` throws above 2^53-1, which is\n// the safe behaviour for token amounts and slot numbers under realistic bounds.\nfunction bnToNum(bn: BN): number {\n return bn.toNumber();\n}\n\nfunction nameFromBytes(bytes: number[]): string {\n const buf = Buffer.from(bytes);\n const end = buf.indexOf(0);\n return (end === -1 ? buf : buf.subarray(0, end)).toString(\"utf8\");\n}\n\nfunction categoryFromRaw(raw: RawServiceRegistry[\"category\"]): ServiceCategory {\n if (\"dataFeed\" in raw) return \"DataFeed\";\n if (\"compute\" in raw) return \"Compute\";\n if (\"swap\" in raw) return \"Swap\";\n if (\"rpc\" in raw) return \"Rpc\";\n return \"Other\";\n}\n\nexport function decodeCreditVault(pubkey: PublicKey, raw: RawCreditVault): CreditVaultAccount {\n const total_deposited = bnToNum(raw.totalDeposited);\n const total_withdrawn = bnToNum(raw.totalWithdrawn);\n const total_spent = bnToNum(raw.totalSpent);\n const total_claimed = bnToNum(raw.totalClaimed);\n return {\n pubkey,\n owner: raw.owner,\n agent: raw.agent,\n usdc_mint: raw.usdcMint,\n vault_token_account: raw.vaultTokenAccount,\n total_deposited,\n total_withdrawn,\n total_spent,\n total_claimed,\n balance: total_deposited - total_withdrawn - total_spent + total_claimed,\n frozen: raw.frozen,\n created_slot: bnToNum(raw.createdSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n\nconst DEFAULT_PUBKEY = PublicKey.default.toBase58();\n\nexport function decodeSpendPolicy(pubkey: PublicKey, raw: RawSpendPolicy): SpendPolicyAccount {\n return {\n pubkey,\n vault: raw.vault,\n whitelist: raw.whitelist.filter((pk) => pk.toBase58() !== DEFAULT_PUBKEY),\n per_tx_limit_usdc: bnToNum(raw.perTxLimitUsdc),\n hourly_limit_usdc: bnToNum(raw.hourlyLimitUsdc),\n lifetime_limit_usdc: bnToNum(raw.lifetimeLimitUsdc),\n hourly_window_start_slot: bnToNum(raw.hourlyWindowStartSlot),\n hourly_window_spent_usdc: bnToNum(raw.hourlyWindowSpentUsdc),\n allow_post_pay: raw.allowPostPay,\n };\n}\n\nexport function decodeServiceRegistry(\n pubkey: PublicKey,\n raw: RawServiceRegistry,\n): ServiceRegistryAccount {\n return {\n pubkey,\n authority: raw.authority,\n name: nameFromBytes(raw.name),\n category: categoryFromRaw(raw.category),\n total_agents_served: bnToNum(raw.totalAgentsServed),\n total_volume_received_usdc: bnToNum(raw.totalVolumeReceivedUsdc),\n active: raw.active,\n first_active_slot: bnToNum(raw.firstActiveSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n","export class AgentFuelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AgentFuelError\";\n }\n}\n\n// Thrown when a method needs the vault owner but neither the constructor nor\n// the call site supplied one. The fix is to pass `owner` to `new AgentFuel`\n// or to the method itself.\nexport class OwnerNotConfiguredError extends AgentFuelError {\n constructor() {\n super(\"vault owner is not configured: pass `owner` to `new AgentFuel({...})` or to the method\");\n this.name = \"OwnerNotConfiguredError\";\n }\n}\n\nexport class AccountNotFoundError extends AgentFuelError {\n readonly account: string;\n constructor(account: string) {\n super(`account not found: ${account}`);\n this.name = \"AccountNotFoundError\";\n this.account = account;\n }\n}\n\nexport class HttpError extends AgentFuelError {\n readonly status: number;\n readonly url: string;\n readonly body: string | undefined;\n constructor(status: number, url: string, body?: string) {\n super(`HTTP ${status} from ${url}`);\n this.name = \"HttpError\";\n this.status = status;\n this.url = url;\n this.body = body;\n }\n}\n\n// Local spend guardrails — mirror `check_and_record_spend` in\n// programs/credit_vault/src/policy.rs. Thrown before the SDK constructs the\n// on-chain `spend` instruction so callers see a typed error instead of an\n// opaque simulation failure.\n\nexport class SpendPolicyError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"SpendPolicyError\";\n }\n}\n\nexport class VaultFrozenError extends SpendPolicyError {\n constructor() {\n super(\"vault is frozen\");\n this.name = \"VaultFrozenError\";\n }\n}\n\nexport class ZeroAmountError extends SpendPolicyError {\n constructor() {\n super(\"amount must be > 0\");\n this.name = \"ZeroAmountError\";\n }\n}\n\nexport class PerTxLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly amount: number;\n constructor(amount: number, limit: number) {\n super(`per-tx limit exceeded: ${amount} > ${limit}`);\n this.name = \"PerTxLimitExceededError\";\n this.amount = amount;\n this.limit = limit;\n }\n}\n\nexport class HourlyLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly windowSpent: number;\n readonly amount: number;\n constructor(amount: number, windowSpent: number, limit: number) {\n super(`hourly limit exceeded: ${windowSpent} + ${amount} > ${limit}`);\n this.name = \"HourlyLimitExceededError\";\n this.amount = amount;\n this.windowSpent = windowSpent;\n this.limit = limit;\n }\n}\n\nexport class LifetimeLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly totalSpent: number;\n readonly amount: number;\n constructor(amount: number, totalSpent: number, limit: number) {\n super(`lifetime limit exceeded: ${totalSpent} + ${amount} > ${limit}`);\n this.name = \"LifetimeLimitExceededError\";\n this.amount = amount;\n this.totalSpent = totalSpent;\n this.limit = limit;\n }\n}\n\nexport class NotWhitelistedError extends SpendPolicyError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is not in the vault's whitelist`);\n this.name = \"NotWhitelistedError\";\n this.service = service;\n }\n}\n","import type { PublicKey } from \"@solana/web3.js\";\nimport { SLOTS_PER_HOUR } from \"./constants.js\";\nimport {\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport type { CreditVaultAccount, SpendPolicyAccount } from \"./types.js\";\n\n// Mirrors `check_and_record_spend` in programs/credit_vault/src/policy.rs.\n// This is a best-effort pre-flight: a concurrent spend, a window roll-over, or\n// any other on-chain state change between this check and the transaction\n// landing can still cause the chain to reject. The SDK surfaces the on-chain\n// error in that case — the local check just avoids the network round-trip for\n// the obvious failures.\nexport function guardSpend(args: {\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n service: PublicKey;\n amountUsdc: number;\n currentSlot: number;\n}): void {\n const { vault, policy, service, amountUsdc, currentSlot } = args;\n\n if (vault.frozen) throw new VaultFrozenError();\n if (amountUsdc <= 0) throw new ZeroAmountError();\n\n if (policy.whitelist.length > 0) {\n const allowed = policy.whitelist.some((pk) => pk.equals(service));\n if (!allowed) throw new NotWhitelistedError(service.toBase58());\n }\n\n if (policy.per_tx_limit_usdc > 0 && amountUsdc > policy.per_tx_limit_usdc) {\n throw new PerTxLimitExceededError(amountUsdc, policy.per_tx_limit_usdc);\n }\n\n if (policy.hourly_limit_usdc > 0) {\n const windowElapsed = currentSlot - policy.hourly_window_start_slot >= SLOTS_PER_HOUR;\n const windowSpent = windowElapsed ? 0 : policy.hourly_window_spent_usdc;\n const newWindowTotal = windowSpent + amountUsdc;\n if (newWindowTotal > policy.hourly_limit_usdc) {\n throw new HourlyLimitExceededError(amountUsdc, windowSpent, policy.hourly_limit_usdc);\n }\n }\n\n if (policy.lifetime_limit_usdc > 0) {\n const newTotalSpent = vault.total_spent + amountUsdc;\n if (newTotalSpent > policy.lifetime_limit_usdc) {\n throw new LifetimeLimitExceededError(amountUsdc, vault.total_spent, policy.lifetime_limit_usdc);\n }\n }\n}\n","import type { LiveEventFrame, LiveStatus, Subscription } from \"./types.js\";\n\n// Isomorphic WebSocket: prefer the runtime global (browsers, Node 22+), fall\n// back to the `ws` package for Node 18-21. The fallback is resolved lazily so\n// browser bundlers don't pull in `ws`.\ntype AnyWebSocket = {\n readyState: number;\n close(code?: number, reason?: string): void;\n addEventListener(type: string, listener: (ev: { data: unknown }) => void): void;\n};\ntype WebSocketCtor = new (url: string) => AnyWebSocket;\n\nlet cachedCtor: WebSocketCtor | Promise<WebSocketCtor> | null = null;\n\nasync function getWebSocketCtor(): Promise<WebSocketCtor> {\n if (cachedCtor) return cachedCtor;\n const globalCtor = (globalThis as { WebSocket?: WebSocketCtor }).WebSocket;\n if (globalCtor) {\n cachedCtor = globalCtor;\n return globalCtor;\n }\n cachedCtor = (async () => {\n const mod = await import(\"ws\");\n return mod.WebSocket as unknown as WebSocketCtor;\n })();\n return cachedCtor;\n}\n\nconst WS_OPEN = 1;\nconst MAX_BACKOFF_MS = 30_000;\n\nexport type SubscribeOptions = {\n onFrame: (frame: LiveEventFrame) => void;\n onStatus?: (status: LiveStatus) => void;\n};\n\nexport function subscribe(url: string, opts: SubscribeOptions): Subscription {\n let socket: AnyWebSocket | null = null;\n let alive = true;\n let attempts = 0;\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n let currentStatus: LiveStatus = \"connecting\";\n\n function setStatus(next: LiveStatus): void {\n currentStatus = next;\n opts.onStatus?.(next);\n }\n\n async function connect(): Promise<void> {\n if (!alive) return;\n setStatus(attempts === 0 ? \"connecting\" : \"reconnecting\");\n const WS = await getWebSocketCtor();\n if (!alive) return;\n socket = new WS(url);\n\n socket.addEventListener(\"open\", () => {\n attempts = 0;\n setStatus(\"open\");\n });\n\n socket.addEventListener(\"message\", (ev) => {\n if (typeof ev.data !== \"string\" || ev.data.length === 0) return;\n try {\n const parsed = JSON.parse(ev.data) as LiveEventFrame;\n if (parsed.type === \"event\") opts.onFrame(parsed);\n } catch {\n // Future backend versions may emit ping/keepalive frames — ignore.\n }\n });\n\n socket.addEventListener(\"close\", () => {\n if (!alive) return;\n attempts += 1;\n const delay = Math.min(MAX_BACKOFF_MS, 1_000 * 2 ** (attempts - 1));\n setStatus(\"reconnecting\");\n reconnectTimer = setTimeout(() => {\n void connect();\n }, delay);\n });\n\n // `error` events are followed by `close`; nothing extra to do here.\n socket.addEventListener(\"error\", () => {});\n }\n\n void connect();\n\n return {\n close(): void {\n alive = false;\n if (reconnectTimer !== null) clearTimeout(reconnectTimer);\n if (socket && socket.readyState === WS_OPEN) {\n socket.close(1000, \"client close\");\n }\n socket = null;\n setStatus(\"closed\");\n },\n get status(): LiveStatus {\n return currentStatus;\n },\n };\n}\n\n// Translate the SDK's apiBase (an HTTP URL) into the matching WebSocket URL.\nexport function wsUrl(apiBase: string, path: string): string {\n if (apiBase.startsWith(\"https://\")) return apiBase.replace(/^https/, \"wss\") + path;\n if (apiBase.startsWith(\"http://\")) return apiBase.replace(/^http/, \"ws\") + path;\n return apiBase + path;\n}\n","{\n \"address\": \"4GjB4xdm1VTPVM6KSiEEfJpD4u7BfY1qDx77StiFShvQ\",\n \"metadata\": {\n \"name\": \"reputation\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — On-chain reputation primitive for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"append_response\",\n \"discriminator\": [\n 162,\n 210,\n 186,\n 50,\n 180,\n 4,\n 47,\n 104\n ],\n \"accounts\": [\n {\n \"name\": \"responder\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"compute_score\",\n \"discriminator\": [\n 161,\n 101,\n 4,\n 93,\n 120,\n 62,\n 41,\n 20\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"give_feedback\",\n \"discriminator\": [\n 145,\n 136,\n 123,\n 3,\n 215,\n 165,\n 98,\n 41\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"initialize_agent\",\n \"discriminator\": [\n 212,\n 81,\n 156,\n 211,\n 212,\n 110,\n 21,\n 28\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"record_payment\",\n \"discriminator\": [\n 226,\n 154,\n 10,\n 27,\n 9,\n 14,\n 148,\n 137\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"register_service\",\n \"discriminator\": [\n 11,\n 133,\n 158,\n 232,\n 193,\n 19,\n 229,\n 73\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n }\n ]\n },\n {\n \"name\": \"revoke_feedback\",\n \"discriminator\": [\n 211,\n 37,\n 230,\n 82,\n 118,\n 216,\n 137,\n 206\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AgentProfile\",\n \"discriminator\": [\n 60,\n 227,\n 42,\n 24,\n 0,\n 87,\n 86,\n 205\n ]\n },\n {\n \"name\": \"AgentServiceLink\",\n \"discriminator\": [\n 123,\n 74,\n 215,\n 240,\n 42,\n 88,\n 217,\n 216\n ]\n },\n {\n \"name\": \"FeedbackRecord\",\n \"discriminator\": [\n 15,\n 45,\n 246,\n 217,\n 63,\n 251,\n 69,\n 100\n ]\n },\n {\n \"name\": \"ReceiptUsed\",\n \"discriminator\": [\n 143,\n 21,\n 251,\n 75,\n 166,\n 7,\n 163,\n 137\n ]\n },\n {\n \"name\": \"ServiceRegistry\",\n \"discriminator\": [\n 105,\n 133,\n 96,\n 79,\n 207,\n 176,\n 202,\n 71\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AgentInitialized\",\n \"discriminator\": [\n 124,\n 252,\n 85,\n 27,\n 146,\n 101,\n 64,\n 160\n ]\n },\n {\n \"name\": \"FeedbackGiven\",\n \"discriminator\": [\n 64,\n 65,\n 2,\n 152,\n 174,\n 215,\n 156,\n 194\n ]\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"discriminator\": [\n 205,\n 16,\n 31,\n 94,\n 54,\n 101,\n 16,\n 199\n ]\n },\n {\n \"name\": \"PaymentRecorded\",\n \"discriminator\": [\n 214,\n 3,\n 212,\n 116,\n 135,\n 35,\n 104,\n 98\n ]\n },\n {\n \"name\": \"ResponseAppended\",\n \"discriminator\": [\n 168,\n 169,\n 214,\n 193,\n 171,\n 1,\n 232,\n 123\n ]\n },\n {\n \"name\": \"ScoreComputed\",\n \"discriminator\": [\n 52,\n 76,\n 80,\n 33,\n 2,\n 43,\n 75,\n 109\n ]\n },\n {\n \"name\": \"ServiceRegistered\",\n \"discriminator\": [\n 25,\n 219,\n 76,\n 223,\n 57,\n 191,\n 117,\n 38\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ServiceInactive\",\n \"msg\": \"Service is not active\"\n },\n {\n \"code\": 6002,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Payment amount must be greater than zero\"\n },\n {\n \"code\": 6003,\n \"name\": \"SelfRating\",\n \"msg\": \"A service may not rate itself or the agent owner\"\n },\n {\n \"code\": 6004,\n \"name\": \"ReceiptMismatch\",\n \"msg\": \"Receipt does not belong to this (agent, service) pair\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidFeedbackValue\",\n \"msg\": \"Feedback value is outside the allowed range\"\n },\n {\n \"code\": 6006,\n \"name\": \"UnauthorizedResponder\",\n \"msg\": \"Responder must be the agent or its owner\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyHasResponse\",\n \"msg\": \"Feedback already has a response\"\n },\n {\n \"code\": 6008,\n \"name\": \"AlreadyRevoked\",\n \"msg\": \"Feedback has already been revoked\"\n },\n {\n \"code\": 6009,\n \"name\": \"FeedbackRateLimited\",\n \"msg\": \"Feedback rate limit not yet expired for this (service, agent) pair\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AgentInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentProfile\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"consecutive_success\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"active_negative_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"services_used\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reputation_score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"AgentServiceLink\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"first_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_feedback_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"has_received_feedback\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackGiven\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent_profile\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service_registry\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"has_response\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"revoked\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_modified_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"was_negative\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PaymentRecorded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"was_new_pair\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiptUsed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ResponseAppended\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"responder\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ScoreComputed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceCategory\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"DataFeed\"\n },\n {\n \"name\": \"Compute\"\n },\n {\n \"name\": \"Swap\"\n },\n {\n \"name\": \"Rpc\"\n },\n {\n \"name\": \"Other\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"total_agents_served\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_received_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"EsykPsafhHUeN7jA9DGqBiGuBsTBaFynLDVVpE4jFXDg\",\n \"metadata\": {\n \"name\": \"credit_vault\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — Budget-bound USDC spending vault for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"create_vault\",\n \"discriminator\": [\n 29,\n 237,\n 247,\n 208,\n 193,\n 82,\n 54,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"docs\": [\n \"account need not exist on chain; we never read or write its data.\"\n ]\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"freeze_vault\",\n \"discriminator\": [\n 144,\n 211,\n 63,\n 236,\n 97,\n 31,\n 170,\n 175\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"spend\",\n \"discriminator\": [\n 242,\n 205,\n 255,\n 87,\n 101,\n 217,\n 245,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"unfreeze_vault\",\n \"discriminator\": [\n 145,\n 244,\n 206,\n 234,\n 251,\n 250,\n 116,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"update_policy\",\n \"discriminator\": [\n 212,\n 245,\n 246,\n 7,\n 163,\n 151,\n 18,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"new_whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CreditVault\",\n \"discriminator\": [\n 143,\n 180,\n 135,\n 248,\n 84,\n 85,\n 183,\n 70\n ]\n },\n {\n \"name\": \"SpendPolicy\",\n \"discriminator\": [\n 139,\n 90,\n 209,\n 31,\n 205,\n 15,\n 68,\n 243\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deposited\",\n \"discriminator\": [\n 111,\n 141,\n 26,\n 45,\n 161,\n 35,\n 100,\n 57\n ]\n },\n {\n \"name\": \"PolicyUpdated\",\n \"discriminator\": [\n 225,\n 112,\n 112,\n 67,\n 95,\n 236,\n 245,\n 161\n ]\n },\n {\n \"name\": \"Spent\",\n \"discriminator\": [\n 43,\n 51,\n 164,\n 100,\n 191,\n 244,\n 174,\n 98\n ]\n },\n {\n \"name\": \"VaultCreated\",\n \"discriminator\": [\n 117,\n 25,\n 120,\n 254,\n 75,\n 236,\n 78,\n 115\n ]\n },\n {\n \"name\": \"VaultFrozen\",\n \"discriminator\": [\n 13,\n 199,\n 172,\n 111,\n 88,\n 10,\n 151,\n 247\n ]\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"discriminator\": [\n 128,\n 194,\n 79,\n 155,\n 85,\n 31,\n 226,\n 170\n ]\n },\n {\n \"name\": \"Withdrawn\",\n \"discriminator\": [\n 20,\n 89,\n 223,\n 198,\n 194,\n 124,\n 219,\n 13\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Amount must be greater than zero\"\n },\n {\n \"code\": 6002,\n \"name\": \"Frozen\",\n \"msg\": \"Vault is frozen\"\n },\n {\n \"code\": 6003,\n \"name\": \"NotWhitelisted\",\n \"msg\": \"Service is not on the vault's whitelist\"\n },\n {\n \"code\": 6004,\n \"name\": \"PerTxLimitExceeded\",\n \"msg\": \"Amount exceeds the per-transaction limit\"\n },\n {\n \"code\": 6005,\n \"name\": \"HourlyLimitExceeded\",\n \"msg\": \"Amount exceeds the hourly rolling-window limit\"\n },\n {\n \"code\": 6006,\n \"name\": \"LifetimeLimitExceeded\",\n \"msg\": \"Amount would exceed the lifetime spend ceiling\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyFrozen\",\n \"msg\": \"Vault is already frozen\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotFrozen\",\n \"msg\": \"Vault is not frozen\"\n },\n {\n \"code\": 6009,\n \"name\": \"PostPayDisabled\",\n \"msg\": \"Post-pay claims are disabled for this vault\"\n }\n ],\n \"types\": [\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreditVault\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"frozen\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Deposited\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PolicyUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendPolicy\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_start_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_spent_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Spent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultFrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Withdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}","import { PublicKey } from \"@solana/web3.js\";\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\n\nexport const PROGRAM_IDS = {\n reputation: new PublicKey(reputationIdl.address),\n creditVault: new PublicKey(creditVaultIdl.address),\n} as const;\n","import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_IDS } from \"./program-ids.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport function toPubkey(value: Pubkeyish): PublicKey {\n return value instanceof PublicKey ? value : new PublicKey(value);\n}\n\nexport function vaultPda(owner: Pubkeyish, agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"vault\"), toPubkey(owner).toBuffer(), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function policyPda(vault: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"policy\"), toPubkey(vault).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function serviceRegistryPda(serviceAuthority: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"service\"), toPubkey(serviceAuthority).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n","import { AnchorProvider, Program, Wallet, type Idl } from \"@coral-xyz/anchor\";\nimport {\n type ConfirmOptions,\n type Connection,\n type Keypair,\n type PublicKey,\n type TransactionInstruction,\n} from \"@solana/web3.js\";\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport type BN from \"bn.js\";\n\nexport type RawCreditVault = {\n owner: PublicKey;\n agent: PublicKey;\n usdcMint: PublicKey;\n vaultTokenAccount: PublicKey;\n totalDeposited: BN;\n totalWithdrawn: BN;\n totalSpent: BN;\n totalClaimed: BN;\n frozen: boolean;\n createdSlot: BN;\n lastActiveSlot: BN;\n};\n\nexport type RawSpendPolicy = {\n vault: PublicKey;\n whitelist: PublicKey[];\n perTxLimitUsdc: BN;\n hourlyLimitUsdc: BN;\n lifetimeLimitUsdc: BN;\n hourlyWindowStartSlot: BN;\n hourlyWindowSpentUsdc: BN;\n allowPostPay: boolean;\n};\n\nexport type RawServiceRegistry = {\n authority: PublicKey;\n name: number[];\n category:\n | { dataFeed: Record<string, never> }\n | { compute: Record<string, never> }\n | { swap: Record<string, never> }\n | { rpc: Record<string, never> }\n | { other: Record<string, never> };\n totalAgentsServed: BN;\n totalVolumeReceivedUsdc: BN;\n active: boolean;\n firstActiveSlot: BN;\n lastActiveSlot: BN;\n};\n\ntype Fetchable<T> = {\n fetchNullable(address: PublicKey): Promise<T | null>;\n};\n\nexport type SpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype SpendBuilder = {\n accounts(accounts: SpendAccounts): {\n preInstructions(instructions: readonly TransactionInstruction[]): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CreditVaultProgram = {\n account: {\n creditVault: Fetchable<RawCreditVault>;\n spendPolicy: Fetchable<RawSpendPolicy>;\n };\n methods: {\n spend(amountUsdc: BN): SpendBuilder;\n };\n};\n\nexport type ReputationProgram = {\n account: {\n serviceRegistry: Fetchable<RawServiceRegistry>;\n };\n};\n\nexport function buildProvider(connection: Connection, keypair: Keypair): AnchorProvider {\n return new AnchorProvider(connection, new Wallet(keypair), AnchorProvider.defaultOptions());\n}\n\nexport function creditVaultProgram(provider: AnchorProvider): CreditVaultProgram {\n return new Program(creditVaultIdl as unknown as Idl, provider) as unknown as CreditVaultProgram;\n}\n\nexport function reputationProgram(provider: AnchorProvider): ReputationProgram {\n return new Program(reputationIdl as unknown as Idl, provider) as unknown as ReputationProgram;\n}\n","import { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey, type Keypair } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport {\n decodeCreditVault,\n decodeServiceRegistry,\n decodeSpendPolicy,\n} from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n HttpError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n OwnerNotConfiguredError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport { subscribe, wsUrl } from \"./live.js\";\nimport { policyPda, serviceRegistryPda, toPubkey, vaultPda } from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n type CreditVaultProgram,\n type ReputationProgram,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n LiveEventFrame,\n LiveStatus,\n Pubkeyish,\n ReputationLookup,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n Subscription,\n} from \"./types.js\";\n\nexport type Cluster = \"mainnet-beta\" | \"devnet\" | \"testnet\" | \"localnet\";\n\nexport type AgentFuelOptions = {\n agent: Keypair;\n cluster: Cluster;\n rpc: string | Connection;\n // Optional vault owner. When set, `getVaultBalance()`, `getPolicy()`, and\n // `spend()` default to this owner so callers don't have to pass it on every\n // call. Per-method overrides still work for the \"inspect someone else's\n // vault\" case.\n owner?: Pubkeyish;\n apiBase?: string;\n};\n\nexport type VaultRef = {\n owner?: Pubkeyish;\n agent?: Pubkeyish;\n};\n\nexport type SpendArgs = {\n service: Pubkeyish;\n amountUsdc: number;\n owner?: Pubkeyish;\n};\n\nexport type SpendResult = {\n signature: string;\n};\n\nexport type OnEventOptions = {\n agent?: Pubkeyish;\n onStatus?: (status: LiveStatus) => void;\n};\n\nconst DEFAULT_API_BASE = \"http://localhost:8080\";\n\nexport class AgentFuel {\n readonly agent: Keypair;\n readonly cluster: Cluster;\n readonly connection: Connection;\n readonly apiBase: string;\n readonly owner: PublicKey | undefined;\n\n private _creditVault: CreditVaultProgram | undefined;\n private _reputation: ReputationProgram | undefined;\n\n constructor(opts: AgentFuelOptions) {\n this.agent = opts.agent;\n this.cluster = opts.cluster;\n this.connection =\n typeof opts.rpc === \"string\" ? new Connection(opts.rpc, \"confirmed\") : opts.rpc;\n this.apiBase = opts.apiBase ?? DEFAULT_API_BASE;\n this.owner = opts.owner ? toPubkey(opts.owner) : undefined;\n }\n\n get agentPubkey(): PublicKey {\n return this.agent.publicKey;\n }\n\n private get creditVault(): CreditVaultProgram {\n if (!this._creditVault) {\n this._creditVault = creditVaultProgram(buildProvider(this.connection, this.agent));\n }\n return this._creditVault;\n }\n\n private get reputation(): ReputationProgram {\n if (!this._reputation) {\n this._reputation = reputationProgram(buildProvider(this.connection, this.agent));\n }\n return this._reputation;\n }\n\n private resolveOwner(override?: Pubkeyish): PublicKey {\n const value = override ?? this.owner;\n if (!value) throw new OwnerNotConfiguredError();\n return toPubkey(value);\n }\n\n async getScore(agent?: Pubkeyish): Promise<ReputationLookup> {\n const target = agent ? toPubkey(agent) : this.agentPubkey;\n const agentStr = target.toBase58();\n const url = `${this.apiBase.replace(/\\/$/, \"\")}/reputation/${agentStr}`;\n const res = await fetch(url);\n if (res.status === 404) throw new AccountNotFoundError(agentStr);\n if (!res.ok) throw new HttpError(res.status, url, await safeText(res));\n return (await res.json()) as ReputationLookup;\n }\n\n async getVaultBalance(ref?: VaultRef): Promise<CreditVaultAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const pda = vaultPda(owner, agent);\n const raw = await this.creditVault.account.creditVault.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeCreditVault(pda, raw);\n }\n\n async getPolicy(ref?: VaultRef): Promise<SpendPolicyAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const vault = vaultPda(owner, agent);\n const pda = policyPda(vault);\n const raw = await this.creditVault.account.spendPolicy.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeSpendPolicy(pda, raw);\n }\n\n async checkService(serviceAuthority: Pubkeyish): Promise<ServiceRegistryAccount> {\n const pda = serviceRegistryPda(serviceAuthority);\n const raw = await this.reputation.account.serviceRegistry.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeServiceRegistry(pda, raw);\n }\n\n async spend(args: SpendArgs): Promise<SpendResult> {\n const owner = this.resolveOwner(args.owner);\n const service = toPubkey(args.service);\n const amountUsdc = args.amountUsdc;\n\n const vault = await this.getVaultBalance({ owner, agent: this.agentPubkey });\n const policy = await this.getPolicy({ owner, agent: this.agentPubkey });\n const currentSlot = await this.connection.getSlot();\n\n guardSpend({ vault, policy, service, amountUsdc, currentSlot });\n\n const serviceTokenAccount = getAssociatedTokenAddress(vault.usdc_mint, service);\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n this.agentPubkey,\n serviceTokenAccount,\n service,\n vault.usdc_mint,\n );\n\n try {\n const signature = await this.creditVault.methods\n .spend(new BN(amountUsdc))\n .accounts({\n agent: this.agentPubkey,\n vault: vault.pubkey,\n policy: policy.pubkey,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .preInstructions([createAtaIx])\n .signers([this.agent])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapSpendError(err, { service, amountUsdc, vault, policy });\n }\n }\n\n onEvent(\n callback: (frame: LiveEventFrame) => void,\n options?: OnEventOptions,\n ): Subscription {\n const target = options?.agent ? toPubkey(options.agent) : this.agentPubkey;\n const url = wsUrl(this.apiBase, `/ws/agents/${target.toBase58()}`);\n const subOpts: { onFrame: (frame: LiveEventFrame) => void; onStatus?: (status: LiveStatus) => void } = {\n onFrame: callback,\n };\n if (options?.onStatus) subOpts.onStatus = options.onStatus;\n return subscribe(url, subOpts);\n }\n}\n\n// Re-throws Anchor `VaultError` codes as the same typed exceptions the local\n// guardrail uses, so callers can `instanceof`-match without caring whether the\n// rejection happened in the pre-flight or on-chain. Codes mirror\n// `programs/credit_vault/src/errors.rs` (Anchor starts custom errors at 6000).\nfunction mapSpendError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n },\n): unknown {\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6001:\n return new ZeroAmountError();\n case 6002:\n return new VaultFrozenError();\n case 6003:\n return new NotWhitelistedError(ctx.service.toBase58());\n case 6004:\n return new PerTxLimitExceededError(ctx.amountUsdc, ctx.policy.per_tx_limit_usdc);\n case 6005:\n return new HourlyLimitExceededError(\n ctx.amountUsdc,\n ctx.policy.hourly_window_spent_usdc,\n ctx.policy.hourly_limit_usdc,\n );\n case 6006:\n return new LifetimeLimitExceededError(\n ctx.amountUsdc,\n ctx.vault.total_spent,\n ctx.policy.lifetime_limit_usdc,\n );\n default:\n return err;\n }\n}\n\nasync function safeText(res: Response): Promise<string | undefined> {\n try {\n return await res.text();\n } catch {\n return undefined;\n }\n}\n","import { AgentFuelError } from \"./errors.js\";\nimport type { AgentFuel } from \"./client.js\";\n\n// Wire shape of the payment requirement. Servers may send the requirement\n// either in an `X-Payment-Required` header (preferred — works with streams)\n// or as a JSON body on the 402 response (closer to the official x402 spec).\n//\n// The parser accepts both `recipient`/`amountUsdc` (the SDK's natural naming)\n// and `payTo`/`maxAmountRequired` (closer to the x402 spec) so servers using\n// either vocabulary work without configuration.\nexport type PaymentRequirement = {\n recipient: string;\n amountUsdc: number;\n network?: string;\n resource?: string;\n};\n\nexport type FetchLike = (\n input: string | URL | Request,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport type PaymentRequiredOptions = {\n // Custom fetch implementation (defaults to global). Use this to plug in\n // node-fetch on legacy runtimes or to inject a mock for tests.\n fetch?: FetchLike;\n // Fires after a 402 is parsed, before `spend()` is called. Useful for\n // user-confirmation prompts.\n onPaymentRequired?: (req: PaymentRequirement) => void | Promise<void>;\n // Fires after the on-chain spend lands. Receives the tx signature.\n onPaid?: (signature: string, req: PaymentRequirement) => void | Promise<void>;\n};\n\nconst HEADER = \"X-Payment-Required\";\nconst PAYMENT_HEADER = \"X-Payment\";\n\nexport class PaymentParseError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"PaymentParseError\";\n }\n}\n\n// Returns a fetch-shaped function that transparently handles HTTP 402:\n// 1. Call the wrapped fetch.\n// 2. If status !== 402, return the response unchanged.\n// 3. Otherwise parse the payment requirement, call `fuel.spend()`, then\n// retry the original request with `X-Payment: <signature>` set.\n//\n// The retry is a single attempt — a second 402 propagates to the caller so a\n// misbehaving server can't drain the vault in a loop.\nexport function paymentRequired(\n fuel: AgentFuel,\n opts: PaymentRequiredOptions = {},\n): FetchLike {\n const baseFetch: FetchLike = opts.fetch ?? ((input, init) => fetch(input, init));\n\n return async (input, init) => {\n const first = await baseFetch(input, init);\n if (first.status !== 402) return first;\n\n const req = await parseRequirement(first);\n if (opts.onPaymentRequired) await opts.onPaymentRequired(req);\n\n const { signature } = await fuel.spend({\n service: req.recipient,\n amountUsdc: req.amountUsdc,\n });\n if (opts.onPaid) await opts.onPaid(signature, req);\n\n const headers = new Headers(init?.headers);\n headers.set(PAYMENT_HEADER, signature);\n return baseFetch(input, { ...init, headers });\n };\n}\n\nasync function parseRequirement(res: Response): Promise<PaymentRequirement> {\n const header = res.headers.get(HEADER);\n if (header) return parseJson(header);\n\n let bodyText: string;\n try {\n bodyText = await res.clone().text();\n } catch {\n throw new PaymentParseError(`402 response has no ${HEADER} header and the body is unreadable`);\n }\n if (!bodyText.trim()) {\n throw new PaymentParseError(`402 response has no ${HEADER} header and an empty body`);\n }\n return parseJson(bodyText);\n}\n\nfunction parseJson(text: string): PaymentRequirement {\n let obj: unknown;\n try {\n obj = JSON.parse(text);\n } catch {\n throw new PaymentParseError(`payment payload is not valid JSON: ${truncate(text)}`);\n }\n if (typeof obj !== \"object\" || obj === null) {\n throw new PaymentParseError(`payment payload is not an object`);\n }\n const r = obj as Record<string, unknown>;\n\n const recipient = stringField(r, \"recipient\") ?? stringField(r, \"payTo\");\n if (!recipient) {\n throw new PaymentParseError(`payment payload missing 'recipient' or 'payTo'`);\n }\n\n const amount =\n numericField(r, \"amountUsdc\") ?? numericField(r, \"maxAmountRequired\");\n if (amount === null || amount <= 0) {\n throw new PaymentParseError(\n `payment payload missing positive 'amountUsdc' or 'maxAmountRequired'`,\n );\n }\n\n const out: PaymentRequirement = { recipient, amountUsdc: amount };\n const network = stringField(r, \"network\");\n if (network) out.network = network;\n const resource = stringField(r, \"resource\");\n if (resource) out.resource = resource;\n return out;\n}\n\nfunction stringField(r: Record<string, unknown>, key: string): string | undefined {\n const v = r[key];\n return typeof v === \"string\" && v.length > 0 ? v : undefined;\n}\n\nfunction numericField(r: Record<string, unknown>, key: string): number | null {\n const v = r[key];\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return null;\n}\n\nfunction truncate(s: string): string {\n return s.length > 80 ? `${s.slice(0, 80)}…` : s;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/decoders.ts","../src/errors.ts","../src/guardrails.ts","../src/live.ts","../src/idl/reputation.json","../src/idl/credit-vault.json","../src/program-ids.ts","../src/pda.ts","../src/programs.ts","../src/client.ts","../src/record-payment.ts","../src/x402.ts"],"names":["PublicKey","BN","SystemProgram","AnchorError"],"mappings":"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","file":"index.js","sourcesContent":["import { PublicKey, SystemProgram, TransactionInstruction } from \"@solana/web3.js\";\n\nexport const TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\n\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\",\n);\n\n// Rolling hourly window in slots, at Solana's nominal 400 ms slot time.\n// Mirrors `SLOTS_PER_HOUR` in programs/credit_vault/src/state.rs.\nexport const SLOTS_PER_HOUR = 9_000;\n\nexport function getAssociatedTokenAddress(mint: PublicKey, owner: PublicKey): PublicKey {\n const [ata] = PublicKey.findProgramAddressSync(\n [owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()],\n ASSOCIATED_TOKEN_PROGRAM_ID,\n );\n return ata;\n}\n\n// Variant 1 (`CreateIdempotent`) of the Associated Token Account program: a\n// no-op when the ATA already exists, otherwise creates it and assigns the\n// payer's lamports for rent. Safe to always prepend before a spend so callers\n// don't have to pre-flight whether the service has ever received USDC.\nexport function createAssociatedTokenAccountIdempotentInstruction(\n payer: PublicKey,\n ata: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n): TransactionInstruction {\n return new TransactionInstruction({\n programId: ASSOCIATED_TOKEN_PROGRAM_ID,\n keys: [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: ata, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n ],\n data: Buffer.from([1]),\n });\n}\n","import { PublicKey } from \"@solana/web3.js\";\nimport type BN from \"bn.js\";\nimport type { RawCreditVault, RawServiceRegistry, RawSpendPolicy } from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n ServiceCategory,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n} from \"./types.js\";\n\n// Anchor returns u64 fields as BN. `.toNumber()` throws above 2^53-1, which is\n// the safe behaviour for token amounts and slot numbers under realistic bounds.\nfunction bnToNum(bn: BN): number {\n return bn.toNumber();\n}\n\nfunction nameFromBytes(bytes: number[]): string {\n const buf = Buffer.from(bytes);\n const end = buf.indexOf(0);\n return (end === -1 ? buf : buf.subarray(0, end)).toString(\"utf8\");\n}\n\nfunction categoryFromRaw(raw: RawServiceRegistry[\"category\"]): ServiceCategory {\n if (\"dataFeed\" in raw) return \"DataFeed\";\n if (\"compute\" in raw) return \"Compute\";\n if (\"swap\" in raw) return \"Swap\";\n if (\"rpc\" in raw) return \"Rpc\";\n return \"Other\";\n}\n\nexport function decodeCreditVault(pubkey: PublicKey, raw: RawCreditVault): CreditVaultAccount {\n const total_deposited = bnToNum(raw.totalDeposited);\n const total_withdrawn = bnToNum(raw.totalWithdrawn);\n const total_spent = bnToNum(raw.totalSpent);\n const total_claimed = bnToNum(raw.totalClaimed);\n return {\n pubkey,\n owner: raw.owner,\n agent: raw.agent,\n usdc_mint: raw.usdcMint,\n vault_token_account: raw.vaultTokenAccount,\n total_deposited,\n total_withdrawn,\n total_spent,\n total_claimed,\n balance: total_deposited - total_withdrawn - total_spent + total_claimed,\n frozen: raw.frozen,\n created_slot: bnToNum(raw.createdSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n\nconst DEFAULT_PUBKEY = PublicKey.default.toBase58();\n\nexport function decodeSpendPolicy(pubkey: PublicKey, raw: RawSpendPolicy): SpendPolicyAccount {\n return {\n pubkey,\n vault: raw.vault,\n whitelist: raw.whitelist.filter((pk) => pk.toBase58() !== DEFAULT_PUBKEY),\n per_tx_limit_usdc: bnToNum(raw.perTxLimitUsdc),\n hourly_limit_usdc: bnToNum(raw.hourlyLimitUsdc),\n lifetime_limit_usdc: bnToNum(raw.lifetimeLimitUsdc),\n hourly_window_start_slot: bnToNum(raw.hourlyWindowStartSlot),\n hourly_window_spent_usdc: bnToNum(raw.hourlyWindowSpentUsdc),\n allow_post_pay: raw.allowPostPay,\n };\n}\n\nexport function decodeServiceRegistry(\n pubkey: PublicKey,\n raw: RawServiceRegistry,\n): ServiceRegistryAccount {\n return {\n pubkey,\n authority: raw.authority,\n name: nameFromBytes(raw.name),\n category: categoryFromRaw(raw.category),\n total_agents_served: bnToNum(raw.totalAgentsServed),\n total_volume_received_usdc: bnToNum(raw.totalVolumeReceivedUsdc),\n active: raw.active,\n first_active_slot: bnToNum(raw.firstActiveSlot),\n last_active_slot: bnToNum(raw.lastActiveSlot),\n };\n}\n","export class AgentFuelError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"AgentFuelError\";\n }\n}\n\n// Thrown when a method needs the vault owner but neither the constructor nor\n// the call site supplied one. The fix is to pass `owner` to `new AgentFuel`\n// or to the method itself.\nexport class OwnerNotConfiguredError extends AgentFuelError {\n constructor() {\n super(\"vault owner is not configured: pass `owner` to `new AgentFuel({...})` or to the method\");\n this.name = \"OwnerNotConfiguredError\";\n }\n}\n\nexport class AccountNotFoundError extends AgentFuelError {\n readonly account: string;\n constructor(account: string) {\n super(`account not found: ${account}`);\n this.name = \"AccountNotFoundError\";\n this.account = account;\n }\n}\n\nexport class HttpError extends AgentFuelError {\n readonly status: number;\n readonly url: string;\n readonly body: string | undefined;\n constructor(status: number, url: string, body?: string) {\n super(`HTTP ${status} from ${url}`);\n this.name = \"HttpError\";\n this.status = status;\n this.url = url;\n this.body = body;\n }\n}\n\n// Local spend guardrails — mirror `check_and_record_spend` in\n// programs/credit_vault/src/policy.rs. Thrown before the SDK constructs the\n// on-chain `spend` instruction so callers see a typed error instead of an\n// opaque simulation failure.\n\nexport class SpendPolicyError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"SpendPolicyError\";\n }\n}\n\nexport class VaultFrozenError extends SpendPolicyError {\n constructor() {\n super(\"vault is frozen\");\n this.name = \"VaultFrozenError\";\n }\n}\n\nexport class ZeroAmountError extends SpendPolicyError {\n constructor() {\n super(\"amount must be > 0\");\n this.name = \"ZeroAmountError\";\n }\n}\n\nexport class PerTxLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly amount: number;\n constructor(amount: number, limit: number) {\n super(`per-tx limit exceeded: ${amount} > ${limit}`);\n this.name = \"PerTxLimitExceededError\";\n this.amount = amount;\n this.limit = limit;\n }\n}\n\nexport class HourlyLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly windowSpent: number;\n readonly amount: number;\n constructor(amount: number, windowSpent: number, limit: number) {\n super(`hourly limit exceeded: ${windowSpent} + ${amount} > ${limit}`);\n this.name = \"HourlyLimitExceededError\";\n this.amount = amount;\n this.windowSpent = windowSpent;\n this.limit = limit;\n }\n}\n\nexport class LifetimeLimitExceededError extends SpendPolicyError {\n readonly limit: number;\n readonly totalSpent: number;\n readonly amount: number;\n constructor(amount: number, totalSpent: number, limit: number) {\n super(`lifetime limit exceeded: ${totalSpent} + ${amount} > ${limit}`);\n this.name = \"LifetimeLimitExceededError\";\n this.amount = amount;\n this.totalSpent = totalSpent;\n this.limit = limit;\n }\n}\n\nexport class NotWhitelistedError extends SpendPolicyError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is not in the vault's whitelist`);\n this.name = \"NotWhitelistedError\";\n this.service = service;\n }\n}\n\n// Reputation program errors — distinct hierarchy from SpendPolicyError because\n// these come from `record_payment`, not the credit vault.\n\nexport class RecordPaymentError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"RecordPaymentError\";\n }\n}\n\n/// The (service, receipt_hash) pair was already recorded on chain. Idempotent\n/// recorders can catch this and treat it as success — the underlying payment\n/// is already attested. Surfaces from the `init` constraint on the ReceiptUsed\n/// PDA (SystemProgram error 0x0, \"account already in use\").\nexport class ReceiptAlreadyRecordedError extends RecordPaymentError {\n readonly receiptHash: Uint8Array;\n constructor(receiptHash: Uint8Array) {\n super(\"payment receipt was already recorded on chain\");\n this.name = \"ReceiptAlreadyRecordedError\";\n this.receiptHash = receiptHash;\n }\n}\n\nexport class ServiceInactiveError extends RecordPaymentError {\n readonly service: string;\n constructor(service: string) {\n super(`service ${service} is paused; record_payment rejected`);\n this.name = \"ServiceInactiveError\";\n this.service = service;\n }\n}\n","import type { PublicKey } from \"@solana/web3.js\";\nimport { SLOTS_PER_HOUR } from \"./constants.js\";\nimport {\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport type { CreditVaultAccount, SpendPolicyAccount } from \"./types.js\";\n\n// Mirrors `check_and_record_spend` in programs/credit_vault/src/policy.rs.\n// This is a best-effort pre-flight: a concurrent spend, a window roll-over, or\n// any other on-chain state change between this check and the transaction\n// landing can still cause the chain to reject. The SDK surfaces the on-chain\n// error in that case — the local check just avoids the network round-trip for\n// the obvious failures.\nexport function guardSpend(args: {\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n service: PublicKey;\n amountUsdc: number;\n currentSlot: number;\n}): void {\n const { vault, policy, service, amountUsdc, currentSlot } = args;\n\n if (vault.frozen) throw new VaultFrozenError();\n if (amountUsdc <= 0) throw new ZeroAmountError();\n\n if (policy.whitelist.length > 0) {\n const allowed = policy.whitelist.some((pk) => pk.equals(service));\n if (!allowed) throw new NotWhitelistedError(service.toBase58());\n }\n\n if (policy.per_tx_limit_usdc > 0 && amountUsdc > policy.per_tx_limit_usdc) {\n throw new PerTxLimitExceededError(amountUsdc, policy.per_tx_limit_usdc);\n }\n\n if (policy.hourly_limit_usdc > 0) {\n const windowElapsed = currentSlot - policy.hourly_window_start_slot >= SLOTS_PER_HOUR;\n const windowSpent = windowElapsed ? 0 : policy.hourly_window_spent_usdc;\n const newWindowTotal = windowSpent + amountUsdc;\n if (newWindowTotal > policy.hourly_limit_usdc) {\n throw new HourlyLimitExceededError(amountUsdc, windowSpent, policy.hourly_limit_usdc);\n }\n }\n\n if (policy.lifetime_limit_usdc > 0) {\n const newTotalSpent = vault.total_spent + amountUsdc;\n if (newTotalSpent > policy.lifetime_limit_usdc) {\n throw new LifetimeLimitExceededError(amountUsdc, vault.total_spent, policy.lifetime_limit_usdc);\n }\n }\n}\n","import type { LiveEventFrame, LiveStatus, Subscription } from \"./types.js\";\n\n// Isomorphic WebSocket: prefer the runtime global (browsers, Node 22+), fall\n// back to the `ws` package for Node 18-21. The fallback is resolved lazily so\n// browser bundlers don't pull in `ws`.\ntype AnyWebSocket = {\n readyState: number;\n close(code?: number, reason?: string): void;\n addEventListener(type: string, listener: (ev: { data: unknown }) => void): void;\n};\ntype WebSocketCtor = new (url: string) => AnyWebSocket;\n\nlet cachedCtor: WebSocketCtor | Promise<WebSocketCtor> | null = null;\n\nasync function getWebSocketCtor(): Promise<WebSocketCtor> {\n if (cachedCtor) return cachedCtor;\n const globalCtor = (globalThis as { WebSocket?: WebSocketCtor }).WebSocket;\n if (globalCtor) {\n cachedCtor = globalCtor;\n return globalCtor;\n }\n cachedCtor = (async () => {\n const mod = await import(\"ws\");\n return mod.WebSocket as unknown as WebSocketCtor;\n })();\n return cachedCtor;\n}\n\nconst WS_OPEN = 1;\nconst MAX_BACKOFF_MS = 30_000;\n\nexport type SubscribeOptions = {\n onFrame: (frame: LiveEventFrame) => void;\n onStatus?: (status: LiveStatus) => void;\n};\n\nexport function subscribe(url: string, opts: SubscribeOptions): Subscription {\n let socket: AnyWebSocket | null = null;\n let alive = true;\n let attempts = 0;\n let reconnectTimer: ReturnType<typeof setTimeout> | null = null;\n let currentStatus: LiveStatus = \"connecting\";\n\n function setStatus(next: LiveStatus): void {\n currentStatus = next;\n opts.onStatus?.(next);\n }\n\n async function connect(): Promise<void> {\n if (!alive) return;\n setStatus(attempts === 0 ? \"connecting\" : \"reconnecting\");\n const WS = await getWebSocketCtor();\n if (!alive) return;\n socket = new WS(url);\n\n socket.addEventListener(\"open\", () => {\n attempts = 0;\n setStatus(\"open\");\n });\n\n socket.addEventListener(\"message\", (ev) => {\n if (typeof ev.data !== \"string\" || ev.data.length === 0) return;\n try {\n const parsed = JSON.parse(ev.data) as LiveEventFrame;\n if (parsed.type === \"event\") opts.onFrame(parsed);\n } catch {\n // Future backend versions may emit ping/keepalive frames — ignore.\n }\n });\n\n socket.addEventListener(\"close\", () => {\n if (!alive) return;\n attempts += 1;\n const delay = Math.min(MAX_BACKOFF_MS, 1_000 * 2 ** (attempts - 1));\n setStatus(\"reconnecting\");\n reconnectTimer = setTimeout(() => {\n void connect();\n }, delay);\n });\n\n // `error` events are followed by `close`; nothing extra to do here.\n socket.addEventListener(\"error\", () => {});\n }\n\n void connect();\n\n return {\n close(): void {\n alive = false;\n if (reconnectTimer !== null) clearTimeout(reconnectTimer);\n if (socket && socket.readyState === WS_OPEN) {\n socket.close(1000, \"client close\");\n }\n socket = null;\n setStatus(\"closed\");\n },\n get status(): LiveStatus {\n return currentStatus;\n },\n };\n}\n\n// Translate the SDK's apiBase (an HTTP URL) into the matching WebSocket URL.\nexport function wsUrl(apiBase: string, path: string): string {\n if (apiBase.startsWith(\"https://\")) return apiBase.replace(/^https/, \"wss\") + path;\n if (apiBase.startsWith(\"http://\")) return apiBase.replace(/^http/, \"ws\") + path;\n return apiBase + path;\n}\n\n// Public entity-scoped subscriptions. `AgentFuel.onEvent()` covers the agent\n// channel; these mirror it for the other two entity types so callers without\n// an agent keypair (e.g. a service-side recorder) can also tap the stream.\n\nexport function subscribeService(\n apiBase: string,\n servicePubkey: string,\n opts: SubscribeOptions,\n): Subscription {\n return subscribe(wsUrl(apiBase, `/ws/services/${servicePubkey}`), opts);\n}\n\nexport function subscribeVault(\n apiBase: string,\n vaultPubkey: string,\n opts: SubscribeOptions,\n): Subscription {\n return subscribe(wsUrl(apiBase, `/ws/vaults/${vaultPubkey}`), opts);\n}\n","{\n \"address\": \"4GjB4xdm1VTPVM6KSiEEfJpD4u7BfY1qDx77StiFShvQ\",\n \"metadata\": {\n \"name\": \"reputation\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — On-chain reputation primitive for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"append_response\",\n \"discriminator\": [\n 162,\n 210,\n 186,\n 50,\n 180,\n 4,\n 47,\n 104\n ],\n \"accounts\": [\n {\n \"name\": \"responder\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"compute_score\",\n \"discriminator\": [\n 161,\n 101,\n 4,\n 93,\n 120,\n 62,\n 41,\n 20\n ],\n \"accounts\": [\n {\n \"name\": \"caller\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"give_feedback\",\n \"discriminator\": [\n 145,\n 136,\n 123,\n 3,\n 215,\n 165,\n 98,\n 41\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"initialize_agent\",\n \"discriminator\": [\n 212,\n 81,\n 156,\n 211,\n 212,\n 110,\n 21,\n 28\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"record_payment\",\n \"discriminator\": [\n 226,\n 154,\n 10,\n 27,\n 9,\n 14,\n 148,\n 137\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n }\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 108,\n 105,\n 110,\n 107\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"service_registry\"\n }\n ]\n }\n },\n {\n \"name\": \"receipt_used\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 114,\n 101,\n 99,\n 101,\n 105,\n 112,\n 116\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"register_service\",\n \"discriminator\": [\n 11,\n 133,\n 158,\n 232,\n 193,\n 19,\n 229,\n 73\n ],\n \"accounts\": [\n {\n \"name\": \"sponsor\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"service_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n }\n ]\n },\n {\n \"name\": \"revoke_feedback\",\n \"discriminator\": [\n 211,\n 37,\n 230,\n 82,\n 118,\n 216,\n 137,\n 206\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent_profile\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 103,\n 101,\n 110,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent_profile.authority\",\n \"account\": \"AgentProfile\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n },\n \"relations\": [\n \"feedback_record\"\n ]\n },\n {\n \"name\": \"feedback_record\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 102,\n 101,\n 101,\n 100,\n 98,\n 97,\n 99,\n 107\n ]\n },\n {\n \"kind\": \"arg\",\n \"path\": \"payment_receipt_hash\"\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n \"name\": \"set_service_active\",\n \"discriminator\": [\n 221,\n 172,\n 149,\n 49,\n 212,\n 184,\n 77,\n 101\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"service_registry\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 101,\n 114,\n 118,\n 105,\n 99,\n 101\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"service\"\n }\n ]\n }\n },\n {\n \"name\": \"authority\",\n \"relations\": [\n \"service_registry\"\n ]\n }\n ],\n \"args\": [\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AgentProfile\",\n \"discriminator\": [\n 60,\n 227,\n 42,\n 24,\n 0,\n 87,\n 86,\n 205\n ]\n },\n {\n \"name\": \"AgentServiceLink\",\n \"discriminator\": [\n 123,\n 74,\n 215,\n 240,\n 42,\n 88,\n 217,\n 216\n ]\n },\n {\n \"name\": \"FeedbackRecord\",\n \"discriminator\": [\n 15,\n 45,\n 246,\n 217,\n 63,\n 251,\n 69,\n 100\n ]\n },\n {\n \"name\": \"ReceiptUsed\",\n \"discriminator\": [\n 143,\n 21,\n 251,\n 75,\n 166,\n 7,\n 163,\n 137\n ]\n },\n {\n \"name\": \"ServiceRegistry\",\n \"discriminator\": [\n 105,\n 133,\n 96,\n 79,\n 207,\n 176,\n 202,\n 71\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"AgentInitialized\",\n \"discriminator\": [\n 124,\n 252,\n 85,\n 27,\n 146,\n 101,\n 64,\n 160\n ]\n },\n {\n \"name\": \"FeedbackGiven\",\n \"discriminator\": [\n 64,\n 65,\n 2,\n 152,\n 174,\n 215,\n 156,\n 194\n ]\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"discriminator\": [\n 205,\n 16,\n 31,\n 94,\n 54,\n 101,\n 16,\n 199\n ]\n },\n {\n \"name\": \"PaymentRecorded\",\n \"discriminator\": [\n 214,\n 3,\n 212,\n 116,\n 135,\n 35,\n 104,\n 98\n ]\n },\n {\n \"name\": \"ResponseAppended\",\n \"discriminator\": [\n 168,\n 169,\n 214,\n 193,\n 171,\n 1,\n 232,\n 123\n ]\n },\n {\n \"name\": \"ScoreComputed\",\n \"discriminator\": [\n 52,\n 76,\n 80,\n 33,\n 2,\n 43,\n 75,\n 109\n ]\n },\n {\n \"name\": \"ServiceActiveSet\",\n \"discriminator\": [\n 151,\n 122,\n 7,\n 40,\n 191,\n 139,\n 237,\n 52\n ]\n },\n {\n \"name\": \"ServiceRegistered\",\n \"discriminator\": [\n 25,\n 219,\n 76,\n 223,\n 57,\n 191,\n 117,\n 38\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ServiceInactive\",\n \"msg\": \"Service is not active\"\n },\n {\n \"code\": 6002,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Payment amount must be greater than zero\"\n },\n {\n \"code\": 6003,\n \"name\": \"SelfRating\",\n \"msg\": \"A service may not rate itself or the agent owner\"\n },\n {\n \"code\": 6004,\n \"name\": \"ReceiptMismatch\",\n \"msg\": \"Receipt does not belong to this (agent, service) pair\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidFeedbackValue\",\n \"msg\": \"Feedback value is outside the allowed range\"\n },\n {\n \"code\": 6006,\n \"name\": \"UnauthorizedResponder\",\n \"msg\": \"Responder must be the agent or its owner\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyHasResponse\",\n \"msg\": \"Feedback already has a response\"\n },\n {\n \"code\": 6008,\n \"name\": \"AlreadyRevoked\",\n \"msg\": \"Feedback has already been revoked\"\n },\n {\n \"code\": 6009,\n \"name\": \"FeedbackRateLimited\",\n \"msg\": \"Feedback rate limit not yet expired for this (service, agent) pair\"\n },\n {\n \"code\": 6010,\n \"name\": \"UnauthorizedService\",\n \"msg\": \"Only the service authority may perform this action\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AgentInitialized\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"AgentProfile\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"external_agent_id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"consecutive_success\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"total_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"active_negative_feedback_count\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"services_used\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reputation_score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"AgentServiceLink\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_transactions\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"first_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_payment_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_feedback_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"has_received_feedback\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackGiven\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRecord\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent_profile\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service_registry\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"value\",\n \"type\": \"i8\"\n },\n {\n \"name\": \"tags\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"evidence_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"evidence_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"response_uri\",\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"response_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"has_response\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"revoked\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_modified_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FeedbackRevoked\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"was_negative\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PaymentRecorded\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"payment_receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"was_new_pair\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ReceiptUsed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"receipt_hash\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"agent_service_link\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"recorded_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ResponseAppended\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"feedback\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"responder\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ScoreComputed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"score\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceActiveSet\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceCategory\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"DataFeed\"\n },\n {\n \"name\": \"Compute\"\n },\n {\n \"name\": \"Swap\"\n },\n {\n \"name\": \"Rpc\"\n },\n {\n \"name\": \"Other\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistered\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"sponsor\",\n \"docs\": [\n \"Wallet that paid rent. Lets us answer \\\"who registered this service?\\\"\",\n \"without an extra column on the on-chain account.\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"init_slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"ServiceRegistry\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"name\",\n \"type\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n },\n {\n \"name\": \"service_uri\",\n \"docs\": [\n \"Off-chain metadata URI (pricing, docs, endpoint, logo). Padded to 128 bytes;\",\n \"trailing NULs are trimmed when read. Mirrors `AgentProfile::agent_uri`.\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 128\n ]\n }\n },\n {\n \"name\": \"category\",\n \"type\": {\n \"defined\": {\n \"name\": \"ServiceCategory\"\n }\n }\n },\n {\n \"name\": \"total_agents_served\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_volume_received_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"active\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"first_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n }\n ]\n}","{\n \"address\": \"EsykPsafhHUeN7jA9DGqBiGuBsTBaFynLDVVpE4jFXDg\",\n \"metadata\": {\n \"name\": \"credit_vault\",\n \"version\": \"0.1.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Agent Fuel — Budget-bound USDC spending vault for AI agents on Solana\",\n \"repository\": \"https://github.com/TODO/agent_fuel\"\n },\n \"instructions\": [\n {\n \"name\": \"claim\",\n \"discriminator\": [\n 62,\n 198,\n 214,\n 193,\n 213,\n 159,\n 108,\n 210\n ],\n \"accounts\": [\n {\n \"name\": \"service\",\n \"signer\": true\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"create_vault\",\n \"discriminator\": [\n 29,\n 237,\n 247,\n 208,\n 193,\n 82,\n 54,\n 135\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"agent\",\n \"docs\": [\n \"account need not exist on chain; we never read or write its data.\"\n ]\n },\n {\n \"name\": \"usdc_mint\"\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"agent\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"const\",\n \"value\": [\n 6,\n 221,\n 246,\n 225,\n 215,\n 101,\n 161,\n 147,\n 217,\n 203,\n 225,\n 70,\n 206,\n 235,\n 121,\n 172,\n 28,\n 180,\n 133,\n 237,\n 95,\n 91,\n 55,\n 145,\n 58,\n 140,\n 245,\n 133,\n 126,\n 255,\n 0,\n 169\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"usdc_mint\"\n }\n ],\n \"program\": {\n \"kind\": \"const\",\n \"value\": [\n 140,\n 151,\n 37,\n 143,\n 78,\n 36,\n 137,\n 241,\n 187,\n 61,\n 16,\n 41,\n 20,\n 142,\n 13,\n 131,\n 11,\n 90,\n 19,\n 153,\n 218,\n 255,\n 16,\n 132,\n 4,\n 142,\n 123,\n 216,\n 219,\n 233,\n 248,\n 89\n ]\n }\n }\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n },\n {\n \"name\": \"associated_token_program\",\n \"address\": \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": [\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"deposit\",\n \"discriminator\": [\n 242,\n 35,\n 198,\n 137,\n 82,\n 225,\n 242,\n 182\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"freeze_vault\",\n \"discriminator\": [\n 144,\n 211,\n 63,\n 236,\n 97,\n 31,\n 170,\n 175\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"spend\",\n \"discriminator\": [\n 242,\n 205,\n 255,\n 87,\n 101,\n 217,\n 245,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"service_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"unfreeze_vault\",\n \"discriminator\": [\n 145,\n 244,\n 206,\n 234,\n 251,\n 250,\n 116,\n 183\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"update_policy\",\n \"discriminator\": [\n 212,\n 245,\n 246,\n 7,\n 163,\n 151,\n 18,\n 57\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"policy\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 111,\n 108,\n 105,\n 99,\n 121\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"new_per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"new_whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n }\n ]\n },\n {\n \"name\": \"withdraw\",\n \"discriminator\": [\n 183,\n 18,\n 70,\n 156,\n 148,\n 109,\n 161,\n 34\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\n \"signer\": true,\n \"relations\": [\n \"vault\"\n ]\n },\n {\n \"name\": \"vault\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 118,\n 97,\n 117,\n 108,\n 116\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.owner\",\n \"account\": \"CreditVault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"vault_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"owner_token_account\",\n \"writable\": true\n },\n {\n \"name\": \"token_program\",\n \"address\": \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n }\n ],\n \"args\": [\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"CreditVault\",\n \"discriminator\": [\n 143,\n 180,\n 135,\n 248,\n 84,\n 85,\n 183,\n 70\n ]\n },\n {\n \"name\": \"SpendPolicy\",\n \"discriminator\": [\n 139,\n 90,\n 209,\n 31,\n 205,\n 15,\n 68,\n 243\n ]\n }\n ],\n \"events\": [\n {\n \"name\": \"Claimed\",\n \"discriminator\": [\n 217,\n 192,\n 123,\n 72,\n 108,\n 150,\n 248,\n 33\n ]\n },\n {\n \"name\": \"Deposited\",\n \"discriminator\": [\n 111,\n 141,\n 26,\n 45,\n 161,\n 35,\n 100,\n 57\n ]\n },\n {\n \"name\": \"PolicyUpdated\",\n \"discriminator\": [\n 225,\n 112,\n 112,\n 67,\n 95,\n 236,\n 245,\n 161\n ]\n },\n {\n \"name\": \"Spent\",\n \"discriminator\": [\n 43,\n 51,\n 164,\n 100,\n 191,\n 244,\n 174,\n 98\n ]\n },\n {\n \"name\": \"VaultCreated\",\n \"discriminator\": [\n 117,\n 25,\n 120,\n 254,\n 75,\n 236,\n 78,\n 115\n ]\n },\n {\n \"name\": \"VaultFrozen\",\n \"discriminator\": [\n 13,\n 199,\n 172,\n 111,\n 88,\n 10,\n 151,\n 247\n ]\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"discriminator\": [\n 128,\n 194,\n 79,\n 155,\n 85,\n 31,\n 226,\n 170\n ]\n },\n {\n \"name\": \"Withdrawn\",\n \"discriminator\": [\n 20,\n 89,\n 223,\n 198,\n 194,\n 124,\n 219,\n 13\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Overflow\",\n \"msg\": \"Counter or amount overflow\"\n },\n {\n \"code\": 6001,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Amount must be greater than zero\"\n },\n {\n \"code\": 6002,\n \"name\": \"Frozen\",\n \"msg\": \"Vault is frozen\"\n },\n {\n \"code\": 6003,\n \"name\": \"NotWhitelisted\",\n \"msg\": \"Service is not on the vault's whitelist\"\n },\n {\n \"code\": 6004,\n \"name\": \"PerTxLimitExceeded\",\n \"msg\": \"Amount exceeds the per-transaction limit\"\n },\n {\n \"code\": 6005,\n \"name\": \"HourlyLimitExceeded\",\n \"msg\": \"Amount exceeds the hourly rolling-window limit\"\n },\n {\n \"code\": 6006,\n \"name\": \"LifetimeLimitExceeded\",\n \"msg\": \"Amount would exceed the lifetime spend ceiling\"\n },\n {\n \"code\": 6007,\n \"name\": \"AlreadyFrozen\",\n \"msg\": \"Vault is already frozen\"\n },\n {\n \"code\": 6008,\n \"name\": \"NotFrozen\",\n \"msg\": \"Vault is not frozen\"\n },\n {\n \"code\": 6009,\n \"name\": \"PostPayDisabled\",\n \"msg\": \"Post-pay claims are disabled for this vault\"\n }\n ],\n \"types\": [\n {\n \"name\": \"Claimed\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CreditVault\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total_claimed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"frozen\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"created_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"last_active_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Deposited\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_deposited\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"PolicyUpdated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendPolicy\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"whitelist\",\n \"type\": {\n \"array\": [\n \"pubkey\",\n 8\n ]\n }\n },\n {\n \"name\": \"per_tx_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lifetime_limit_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_start_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"hourly_window_spent_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"allow_post_pay\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"Spent\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"service\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_spent\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultCreated\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"agent\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"usdc_mint\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"vault_token_account\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultFrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"VaultUnfrozen\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Withdrawn\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"vault\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"new_total_withdrawn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n }\n ]\n}","import { PublicKey } from \"@solana/web3.js\";\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\n\nexport const PROGRAM_IDS = {\n reputation: new PublicKey(reputationIdl.address),\n creditVault: new PublicKey(creditVaultIdl.address),\n} as const;\n","import { PublicKey } from \"@solana/web3.js\";\nimport { PROGRAM_IDS } from \"./program-ids.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport function toPubkey(value: Pubkeyish): PublicKey {\n return value instanceof PublicKey ? value : new PublicKey(value);\n}\n\nexport function vaultPda(owner: Pubkeyish, agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"vault\"), toPubkey(owner).toBuffer(), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function policyPda(vault: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"policy\"), toPubkey(vault).toBuffer()],\n PROGRAM_IDS.creditVault,\n );\n return pda;\n}\n\nexport function serviceRegistryPda(serviceAuthority: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"service\"), toPubkey(serviceAuthority).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\nexport function agentProfilePda(agent: Pubkeyish): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"agent\"), toPubkey(agent).toBuffer()],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\n/** PDA used by `record_payment` to track the agent ↔ service pair. The seeds\n * are the *PDAs* of the agent profile and service registry, not the raw\n * authority pubkeys — match the on-chain Anchor account constraint. */\nexport function agentServiceLinkPda(\n agentProfile: Pubkeyish,\n serviceRegistry: Pubkeyish,\n): PublicKey {\n const [pda] = PublicKey.findProgramAddressSync(\n [\n Buffer.from(\"link\"),\n toPubkey(agentProfile).toBuffer(),\n toPubkey(serviceRegistry).toBuffer(),\n ],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n\n/** Existence-as-signal: a `ReceiptUsed` PDA at `[b\"receipt\", hash]` proves\n * the receipt has been recorded. `record_payment`'s `init` constraint (not\n * `init_if_needed`) means a duplicate hash fails with `AccountAlreadyInUse`,\n * which is the chain-side replay defence. */\nexport function receiptUsedPda(receiptHash: Uint8Array): PublicKey {\n if (receiptHash.length !== 32) {\n throw new Error(`receiptUsedPda expects a 32-byte hash, got ${receiptHash.length}`);\n }\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"receipt\"), Buffer.from(receiptHash)],\n PROGRAM_IDS.reputation,\n );\n return pda;\n}\n","import { AnchorProvider, Program, Wallet, type Idl } from \"@coral-xyz/anchor\";\nimport {\n type ConfirmOptions,\n type Connection,\n type Keypair,\n type PublicKey,\n type TransactionInstruction,\n} from \"@solana/web3.js\";\nimport creditVaultIdl from \"./idl/credit-vault.json\" with { type: \"json\" };\nimport reputationIdl from \"./idl/reputation.json\" with { type: \"json\" };\nimport type BN from \"bn.js\";\n\nexport type RawCreditVault = {\n owner: PublicKey;\n agent: PublicKey;\n usdcMint: PublicKey;\n vaultTokenAccount: PublicKey;\n totalDeposited: BN;\n totalWithdrawn: BN;\n totalSpent: BN;\n totalClaimed: BN;\n frozen: boolean;\n createdSlot: BN;\n lastActiveSlot: BN;\n};\n\nexport type RawSpendPolicy = {\n vault: PublicKey;\n whitelist: PublicKey[];\n perTxLimitUsdc: BN;\n hourlyLimitUsdc: BN;\n lifetimeLimitUsdc: BN;\n hourlyWindowStartSlot: BN;\n hourlyWindowSpentUsdc: BN;\n allowPostPay: boolean;\n};\n\nexport type RawServiceRegistry = {\n authority: PublicKey;\n name: number[];\n category:\n | { dataFeed: Record<string, never> }\n | { compute: Record<string, never> }\n | { swap: Record<string, never> }\n | { rpc: Record<string, never> }\n | { other: Record<string, never> };\n totalAgentsServed: BN;\n totalVolumeReceivedUsdc: BN;\n active: boolean;\n firstActiveSlot: BN;\n lastActiveSlot: BN;\n};\n\ntype Fetchable<T> = {\n fetchNullable(address: PublicKey): Promise<T | null>;\n};\n\nexport type SpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype SpendBuilder = {\n accounts(accounts: SpendAccounts): {\n preInstructions(instructions: readonly TransactionInstruction[]): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CreditVaultProgram = {\n account: {\n creditVault: Fetchable<RawCreditVault>;\n spendPolicy: Fetchable<RawSpendPolicy>;\n };\n methods: {\n spend(amountUsdc: BN): SpendBuilder;\n };\n};\n\nexport type ComputeScoreAccounts = {\n caller: PublicKey;\n agentProfile: PublicKey;\n};\n\ntype ComputeScoreBuilder = {\n accounts(accounts: ComputeScoreAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type RecordPaymentAccounts = {\n service: PublicKey;\n agentProfile: PublicKey;\n serviceRegistry: PublicKey;\n agentServiceLink: PublicKey;\n receiptUsed: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RecordPaymentBuilder = {\n accounts(accounts: RecordPaymentAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type ReputationProgram = {\n account: {\n serviceRegistry: Fetchable<RawServiceRegistry>;\n };\n methods: {\n computeScore(): ComputeScoreBuilder;\n recordPayment(\n amountUsdc: BN,\n paymentReceiptHash: number[] | Uint8Array,\n ): RecordPaymentBuilder;\n };\n};\n\nexport function buildProvider(connection: Connection, keypair: Keypair): AnchorProvider {\n return new AnchorProvider(connection, new Wallet(keypair), AnchorProvider.defaultOptions());\n}\n\nexport function creditVaultProgram(provider: AnchorProvider): CreditVaultProgram {\n return new Program(creditVaultIdl as unknown as Idl, provider) as unknown as CreditVaultProgram;\n}\n\nexport function reputationProgram(provider: AnchorProvider): ReputationProgram {\n return new Program(reputationIdl as unknown as Idl, provider) as unknown as ReputationProgram;\n}\n","import { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey, type Keypair } from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport {\n decodeCreditVault,\n decodeServiceRegistry,\n decodeSpendPolicy,\n} from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n HttpError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n OwnerNotConfiguredError,\n PerTxLimitExceededError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport { subscribe, wsUrl } from \"./live.js\";\nimport {\n agentProfilePda,\n policyPda,\n serviceRegistryPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n type CreditVaultProgram,\n type ReputationProgram,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n LiveEventFrame,\n LiveStatus,\n Pubkeyish,\n ReputationLookup,\n ServiceRegistryAccount,\n SpendPolicyAccount,\n Subscription,\n} from \"./types.js\";\n\nexport type Cluster = \"mainnet-beta\" | \"devnet\" | \"testnet\" | \"localnet\";\n\nexport type AgentFuelOptions = {\n agent: Keypair;\n cluster: Cluster;\n rpc: string | Connection;\n // Optional vault owner. When set, `getVaultBalance()`, `getPolicy()`, and\n // `spend()` default to this owner so callers don't have to pass it on every\n // call. Per-method overrides still work for the \"inspect someone else's\n // vault\" case.\n owner?: Pubkeyish;\n apiBase?: string;\n};\n\nexport type VaultRef = {\n owner?: Pubkeyish;\n agent?: Pubkeyish;\n};\n\nexport type SpendArgs = {\n service: Pubkeyish;\n amountUsdc: number;\n owner?: Pubkeyish;\n};\n\nexport type SpendResult = {\n signature: string;\n};\n\nexport type OnEventOptions = {\n agent?: Pubkeyish;\n onStatus?: (status: LiveStatus) => void;\n};\n\nconst DEFAULT_API_BASE = \"http://localhost:8080\";\n\nexport class AgentFuel {\n readonly agent: Keypair;\n readonly cluster: Cluster;\n readonly connection: Connection;\n readonly apiBase: string;\n readonly owner: PublicKey | undefined;\n\n private _creditVault: CreditVaultProgram | undefined;\n private _reputation: ReputationProgram | undefined;\n\n constructor(opts: AgentFuelOptions) {\n this.agent = opts.agent;\n this.cluster = opts.cluster;\n this.connection =\n typeof opts.rpc === \"string\" ? new Connection(opts.rpc, \"confirmed\") : opts.rpc;\n this.apiBase = opts.apiBase ?? DEFAULT_API_BASE;\n this.owner = opts.owner ? toPubkey(opts.owner) : undefined;\n }\n\n get agentPubkey(): PublicKey {\n return this.agent.publicKey;\n }\n\n private get creditVault(): CreditVaultProgram {\n if (!this._creditVault) {\n this._creditVault = creditVaultProgram(buildProvider(this.connection, this.agent));\n }\n return this._creditVault;\n }\n\n private get reputation(): ReputationProgram {\n if (!this._reputation) {\n this._reputation = reputationProgram(buildProvider(this.connection, this.agent));\n }\n return this._reputation;\n }\n\n private resolveOwner(override?: Pubkeyish): PublicKey {\n const value = override ?? this.owner;\n if (!value) throw new OwnerNotConfiguredError();\n return toPubkey(value);\n }\n\n async getScore(agent?: Pubkeyish): Promise<ReputationLookup> {\n const target = agent ? toPubkey(agent) : this.agentPubkey;\n const agentStr = target.toBase58();\n const url = `${this.apiBase.replace(/\\/$/, \"\")}/reputation/${agentStr}`;\n const res = await fetch(url);\n if (res.status === 404) throw new AccountNotFoundError(agentStr);\n if (!res.ok) throw new HttpError(res.status, url, await safeText(res));\n return (await res.json()) as ReputationLookup;\n }\n\n async getVaultBalance(ref?: VaultRef): Promise<CreditVaultAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const pda = vaultPda(owner, agent);\n const raw = await this.creditVault.account.creditVault.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeCreditVault(pda, raw);\n }\n\n async getPolicy(ref?: VaultRef): Promise<SpendPolicyAccount> {\n const owner = this.resolveOwner(ref?.owner);\n const agent = ref?.agent ? toPubkey(ref.agent) : this.agentPubkey;\n const vault = vaultPda(owner, agent);\n const pda = policyPda(vault);\n const raw = await this.creditVault.account.spendPolicy.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeSpendPolicy(pda, raw);\n }\n\n async checkService(serviceAuthority: Pubkeyish): Promise<ServiceRegistryAccount> {\n const pda = serviceRegistryPda(serviceAuthority);\n const raw = await this.reputation.account.serviceRegistry.fetchNullable(pda);\n if (!raw) throw new AccountNotFoundError(pda.toBase58());\n return decodeServiceRegistry(pda, raw);\n }\n\n async spend(args: SpendArgs): Promise<SpendResult> {\n const owner = this.resolveOwner(args.owner);\n const service = toPubkey(args.service);\n const amountUsdc = args.amountUsdc;\n\n const vault = await this.getVaultBalance({ owner, agent: this.agentPubkey });\n const policy = await this.getPolicy({ owner, agent: this.agentPubkey });\n const currentSlot = await this.connection.getSlot();\n\n guardSpend({ vault, policy, service, amountUsdc, currentSlot });\n\n const serviceTokenAccount = getAssociatedTokenAddress(vault.usdc_mint, service);\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n this.agentPubkey,\n serviceTokenAccount,\n service,\n vault.usdc_mint,\n );\n\n try {\n const signature = await this.creditVault.methods\n .spend(new BN(amountUsdc))\n .accounts({\n agent: this.agentPubkey,\n vault: vault.pubkey,\n policy: policy.pubkey,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n })\n .preInstructions([createAtaIx])\n .signers([this.agent])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapSpendError(err, { service, amountUsdc, vault, policy });\n }\n }\n\n /// Triggers an on-chain recomputation of the agent's reputation score.\n /// Permissionless — any signer can call it; we use the agent itself since\n /// the SDK already has its keypair available and it already pays tx fees\n /// for spends. The instruction reads the agent's already-public counters\n /// (volume, diversity, streak, tenure, feedback), recalculates the score\n /// to a single u16 ≤ 1000, and emits a `ScoreComputed` event. The webhook\n /// picks that up; the next `getScore()` returns the fresh value.\n async computeScore(): Promise<{ signature: string }> {\n const profile = agentProfilePda(this.agentPubkey);\n const signature = await this.reputation.methods\n .computeScore()\n .accounts({\n caller: this.agentPubkey,\n agentProfile: profile,\n })\n .signers([this.agent])\n .rpc();\n return { signature };\n }\n\n onEvent(\n callback: (frame: LiveEventFrame) => void,\n options?: OnEventOptions,\n ): Subscription {\n const target = options?.agent ? toPubkey(options.agent) : this.agentPubkey;\n const url = wsUrl(this.apiBase, `/ws/agents/${target.toBase58()}`);\n const subOpts: { onFrame: (frame: LiveEventFrame) => void; onStatus?: (status: LiveStatus) => void } = {\n onFrame: callback,\n };\n if (options?.onStatus) subOpts.onStatus = options.onStatus;\n return subscribe(url, subOpts);\n }\n}\n\n// Re-throws Anchor `VaultError` codes as the same typed exceptions the local\n// guardrail uses, so callers can `instanceof`-match without caring whether the\n// rejection happened in the pre-flight or on-chain. Codes mirror\n// `programs/credit_vault/src/errors.rs` (Anchor starts custom errors at 6000).\nfunction mapSpendError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n },\n): unknown {\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6001:\n return new ZeroAmountError();\n case 6002:\n return new VaultFrozenError();\n case 6003:\n return new NotWhitelistedError(ctx.service.toBase58());\n case 6004:\n return new PerTxLimitExceededError(ctx.amountUsdc, ctx.policy.per_tx_limit_usdc);\n case 6005:\n return new HourlyLimitExceededError(\n ctx.amountUsdc,\n ctx.policy.hourly_window_spent_usdc,\n ctx.policy.hourly_limit_usdc,\n );\n case 6006:\n return new LifetimeLimitExceededError(\n ctx.amountUsdc,\n ctx.vault.total_spent,\n ctx.policy.lifetime_limit_usdc,\n );\n default:\n return err;\n }\n}\n\nasync function safeText(res: Response): Promise<string | undefined> {\n try {\n return await res.text();\n } catch {\n return undefined;\n }\n}\n","// Service-side attestation that an agent paid them. Distinct from the\n// agent's `af.spend()` — that one runs on credit_vault and moves USDC;\n// this one runs on reputation and updates the agent ↔ service counters\n// that ultimately feed `compute_score`.\n//\n// The two are deliberately separate so a service can attest only payments\n// it actually received (an agent can't unilaterally inflate its own counters\n// by emitting fake payment events).\n\nimport { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport { Connection, type Keypair, SystemProgram } from \"@solana/web3.js\";\nimport {\n ReceiptAlreadyRecordedError,\n RecordPaymentError,\n ServiceInactiveError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport {\n agentProfilePda,\n agentServiceLinkPda,\n receiptUsedPda,\n serviceRegistryPda,\n toPubkey,\n} from \"./pda.js\";\nimport { buildProvider, reputationProgram } from \"./programs.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport type RecordPaymentArgs = {\n /** Service authority keypair. Signs the tx and pays the fee. Must match\n * the same keypair that was registered on chain as the service authority. */\n service: Keypair;\n /** Agent identity pubkey (NOT the AgentProfile PDA — we derive that). */\n agent: Pubkeyish;\n /** Amount in micro-USDC (1_000_000 = 1 USDC). */\n amountUsdc: number;\n /** 32-byte hash that uniquely identifies this payment. Common choice:\n * `sha256(spendTxSignature)` — the spend signature is unique on chain,\n * so its hash is too. The chain enforces single-use via `init` on the\n * ReceiptUsed PDA; resubmitting the same hash fails with AccountAlreadyInUse. */\n receiptHash: Uint8Array;\n connection: Connection;\n};\n\nexport type RecordPaymentResult = {\n signature: string;\n};\n\nexport async function recordPayment(\n args: RecordPaymentArgs,\n): Promise<RecordPaymentResult> {\n const { service, connection, amountUsdc } = args;\n const agentPubkey = toPubkey(args.agent);\n\n if (amountUsdc <= 0) {\n throw new Error(\"recordPayment: amountUsdc must be > 0\");\n }\n if (args.receiptHash.length !== 32) {\n throw new Error(\n `recordPayment: receiptHash must be 32 bytes, got ${args.receiptHash.length}`,\n );\n }\n\n const provider = buildProvider(connection, service);\n const program = reputationProgram(provider);\n\n const agentProfile = agentProfilePda(agentPubkey);\n const serviceRegistry = serviceRegistryPda(service.publicKey);\n const link = agentServiceLinkPda(agentProfile, serviceRegistry);\n const receipt = receiptUsedPda(args.receiptHash);\n\n try {\n const signature = await program.methods\n .recordPayment(new BN(amountUsdc), args.receiptHash)\n .accounts({\n service: service.publicKey,\n agentProfile,\n serviceRegistry,\n agentServiceLink: link,\n receiptUsed: receipt,\n systemProgram: SystemProgram.programId,\n })\n .signers([service])\n .rpc();\n return { signature };\n } catch (err) {\n throw mapRecordPaymentError(err, args.receiptHash);\n }\n}\n\n// Anchor custom errors for the reputation program start at 6000; the order\n// matches `programs/reputation/src/errors.rs::ReputationError`. The\n// \"AccountAlreadyInUse\" case isn't a custom error — it's the system program's\n// 0x0, fired by Anchor's `init` constraint on ReceiptUsed when the same hash\n// has already been recorded.\nfunction mapRecordPaymentError(err: unknown, receiptHash: Uint8Array): unknown {\n // System program rejects duplicate inits with logs containing\n // \"already in use\" — surface this as a typed, idempotent-friendly error.\n const message = err instanceof Error ? err.message : String(err);\n if (/already in use/i.test(message)) {\n return new ReceiptAlreadyRecordedError(receiptHash);\n }\n if (!(err instanceof AnchorError)) return err;\n switch (err.error.errorCode.number) {\n case 6000:\n return new RecordPaymentError(\"counter overflow on chain\");\n case 6001:\n return new ServiceInactiveError(\n err.error.origin?.toString() ?? \"<unknown service>\",\n );\n case 6002:\n return new ZeroAmountError();\n default:\n return err;\n }\n}\n","import { AgentFuelError } from \"./errors.js\";\nimport type { AgentFuel } from \"./client.js\";\n\n// Wire shape of the payment requirement. Servers may send the requirement\n// either in an `X-Payment-Required` header (preferred — works with streams)\n// or as a JSON body on the 402 response (closer to the official x402 spec).\n//\n// The parser accepts both `recipient`/`amountUsdc` (the SDK's natural naming)\n// and `payTo`/`maxAmountRequired` (closer to the x402 spec) so servers using\n// either vocabulary work without configuration.\nexport type PaymentRequirement = {\n recipient: string;\n amountUsdc: number;\n network?: string;\n resource?: string;\n};\n\nexport type FetchLike = (\n input: string | URL | Request,\n init?: RequestInit,\n) => Promise<Response>;\n\nexport type PaymentRequiredOptions = {\n // Custom fetch implementation (defaults to global). Use this to plug in\n // node-fetch on legacy runtimes or to inject a mock for tests.\n fetch?: FetchLike;\n // Fires after a 402 is parsed, before `spend()` is called. Useful for\n // user-confirmation prompts.\n onPaymentRequired?: (req: PaymentRequirement) => void | Promise<void>;\n // Fires after the on-chain spend lands. Receives the tx signature.\n onPaid?: (signature: string, req: PaymentRequirement) => void | Promise<void>;\n};\n\nconst HEADER = \"X-Payment-Required\";\nconst PAYMENT_HEADER = \"X-Payment\";\n\nexport class PaymentParseError extends AgentFuelError {\n constructor(message: string) {\n super(message);\n this.name = \"PaymentParseError\";\n }\n}\n\n// Returns a fetch-shaped function that transparently handles HTTP 402:\n// 1. Call the wrapped fetch.\n// 2. If status !== 402, return the response unchanged.\n// 3. Otherwise parse the payment requirement, call `fuel.spend()`, then\n// retry the original request with `X-Payment: <signature>` set.\n//\n// The retry is a single attempt — a second 402 propagates to the caller so a\n// misbehaving server can't drain the vault in a loop.\nexport function paymentRequired(\n fuel: AgentFuel,\n opts: PaymentRequiredOptions = {},\n): FetchLike {\n const baseFetch: FetchLike = opts.fetch ?? ((input, init) => fetch(input, init));\n\n return async (input, init) => {\n const first = await baseFetch(input, init);\n if (first.status !== 402) return first;\n\n const req = await parseRequirement(first);\n if (opts.onPaymentRequired) await opts.onPaymentRequired(req);\n\n const { signature } = await fuel.spend({\n service: req.recipient,\n amountUsdc: req.amountUsdc,\n });\n if (opts.onPaid) await opts.onPaid(signature, req);\n\n const headers = new Headers(init?.headers);\n headers.set(PAYMENT_HEADER, signature);\n return baseFetch(input, { ...init, headers });\n };\n}\n\nasync function parseRequirement(res: Response): Promise<PaymentRequirement> {\n const header = res.headers.get(HEADER);\n if (header) return parseJson(header);\n\n let bodyText: string;\n try {\n bodyText = await res.clone().text();\n } catch {\n throw new PaymentParseError(`402 response has no ${HEADER} header and the body is unreadable`);\n }\n if (!bodyText.trim()) {\n throw new PaymentParseError(`402 response has no ${HEADER} header and an empty body`);\n }\n return parseJson(bodyText);\n}\n\nfunction parseJson(text: string): PaymentRequirement {\n let obj: unknown;\n try {\n obj = JSON.parse(text);\n } catch {\n throw new PaymentParseError(`payment payload is not valid JSON: ${truncate(text)}`);\n }\n if (typeof obj !== \"object\" || obj === null) {\n throw new PaymentParseError(`payment payload is not an object`);\n }\n const r = obj as Record<string, unknown>;\n\n const recipient = stringField(r, \"recipient\") ?? stringField(r, \"payTo\");\n if (!recipient) {\n throw new PaymentParseError(`payment payload missing 'recipient' or 'payTo'`);\n }\n\n const amount =\n numericField(r, \"amountUsdc\") ?? numericField(r, \"maxAmountRequired\");\n if (amount === null || amount <= 0) {\n throw new PaymentParseError(\n `payment payload missing positive 'amountUsdc' or 'maxAmountRequired'`,\n );\n }\n\n const out: PaymentRequirement = { recipient, amountUsdc: amount };\n const network = stringField(r, \"network\");\n if (network) out.network = network;\n const resource = stringField(r, \"resource\");\n if (resource) out.resource = resource;\n return out;\n}\n\nfunction stringField(r: Record<string, unknown>, key: string): string | undefined {\n const v = r[key];\n return typeof v === \"string\" && v.length > 0 ? v : undefined;\n}\n\nfunction numericField(r: Record<string, unknown>, key: string): number | null {\n const v = r[key];\n if (typeof v === \"number\" && Number.isFinite(v)) return v;\n if (typeof v === \"string\") {\n const n = Number(v);\n if (Number.isFinite(n)) return n;\n }\n return null;\n}\n\nfunction truncate(s: string): string {\n return s.length > 80 ? `${s.slice(0, 80)}…` : s;\n}\n"]}
|