@agent-fuel/sdk 0.3.1 → 0.3.2
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/dist/cli.cjs +11 -4
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +11 -4
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +10 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.cjs.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/pay.ts","../src/request-spend.ts","../src/register-service.ts","../src/client.ts","../src/cli.ts"],"names":["PublicKey","TransactionInstruction","SystemProgram","AnchorProvider","Wallet","Program","BN","Transaction","sendAndConfirmTransaction","AnchorError","Connection","DEFAULT_API_BASE","readFileSync","Keypair","micro","randomBytes","Command","Option","mkdirSync","dirname","writeFileSync"],"mappings":"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","file":"cli.cjs","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 {\n RawCreditVault,\n RawPendingSpend,\n RawServiceRegistry,\n RawSpendPolicy,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n PendingSpendAccount,\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 pending_count: bnToNum(raw.pendingCount),\n };\n}\n\nexport function decodePendingSpend(\n pubkey: PublicKey,\n raw: RawPendingSpend,\n): PendingSpendAccount {\n return {\n pubkey,\n vault: raw.vault,\n agent: raw.agent,\n service: raw.service,\n amount_usdc: bnToNum(raw.amountUsdc),\n nonce: bnToNum(raw.nonce),\n requested_slot: bnToNum(raw.requestedSlot),\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\": \"approve_spend\",\n \"discriminator\": [\n 248,\n 201,\n 151,\n 15,\n 28,\n 162,\n 112,\n 90\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\": \"owner\"\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\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"pending_spend.nonce\",\n \"account\": \"PendingSpend\"\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 {\n \"name\": \"cancel_spend\",\n \"discriminator\": [\n 122,\n 254,\n 101,\n 132,\n 241,\n 232,\n 205,\n 179\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\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\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"pending_spend.nonce\",\n \"account\": \"PendingSpend\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\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\": \"request_spend\",\n \"discriminator\": [\n 127,\n 12,\n 23,\n 75,\n 137,\n 178,\n 148,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\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\": \"service_token_account\",\n \"docs\": [\n \"The recipient token account. We only need it for its `owner` field\",\n \"(the service pubkey we record in PendingSpend); mint constraint is\",\n \"belt-and-suspenders since `approve_spend` re-checks both.\"\n ]\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.pending_count\",\n \"account\": \"CreditVault\"\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 },\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\": \"PendingSpend\",\n \"discriminator\": [\n 193,\n 205,\n 85,\n 66,\n 25,\n 3,\n 67,\n 134\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\": \"SpendRejected\",\n \"discriminator\": [\n 22,\n 233,\n 208,\n 109,\n 202,\n 231,\n 175,\n 22\n ]\n },\n {\n \"name\": \"SpendRequested\",\n \"discriminator\": [\n 144,\n 207,\n 254,\n 247,\n 81,\n 146,\n 84,\n 87\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 \"code\": 6010,\n \"name\": \"PendingSpendVaultMismatch\",\n \"msg\": \"Pending spend belongs to a different vault\"\n },\n {\n \"code\": 6011,\n \"name\": \"PendingNonceOverflow\",\n \"msg\": \"Pending spend counter would overflow\"\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\": \"pending_count\",\n \"docs\": [\n \"Monotonic counter used as a PDA seed for PendingSpend accounts so\",\n \"every approval request gets a unique deterministic address.\",\n \"Borrowed 8 bytes from the original 64-byte padding so the account\",\n \"size stays at `ACCOUNT_SIZE` and existing vaults need no migration.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 56\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\": \"PendingSpend\",\n \"docs\": [\n \"A spend request that exceeded one of the policy's rate limits. The agent\",\n \"creates this account by calling `request_spend`; the owner reviews from\",\n \"the mobile Alerts tab and either calls `approve_spend` (PDA-signed CPI\",\n \"transfer, account closed) or `cancel_spend` (account closed, no transfer).\",\n \"\",\n \"Seeded by `[\\\"pending\\\", vault, nonce_le]` where `nonce` is the value of\",\n \"`vault.pending_count` at request time, so each request has a unique\",\n \"deterministic address that both the agent and the owner can derive.\"\n ],\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 \"docs\": [\n \"Owner of the destination token account (mirrors how `Spent` records\",\n \"service: `service_token_account.owner`).\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"requested_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 31\n ]\n }\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\": \"SpendRejected\",\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\": \"pending_spend\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendRequested\",\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\": \"pending_spend\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\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/** PendingSpend PDA — created by `request_spend`, consumed (and closed) by\n * either `approve_spend` (CPIs into `spend`, transfers USDC) or\n * `cancel_spend` (closes without transfer). Nonce is the vault's\n * `pending_count` at request time, so every request gets a fresh PDA. */\nexport function pendingSpendPda(vault: Pubkeyish, nonce: number | bigint): PublicKey {\n const nonceBuf = Buffer.alloc(8);\n // u64 little-endian — matches Rust `nonce.to_le_bytes()`.\n nonceBuf.writeBigUInt64LE(typeof nonce === \"bigint\" ? nonce : BigInt(nonce));\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"pending\"), toPubkey(vault).toBuffer(), nonceBuf],\n PROGRAM_IDS.creditVault,\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 pendingCount: BN;\n};\n\nexport type RawPendingSpend = {\n vault: PublicKey;\n agent: PublicKey;\n service: PublicKey;\n amountUsdc: BN;\n nonce: BN;\n requestedSlot: 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 RequestSpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n serviceTokenAccount: PublicKey;\n pendingSpend: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RequestSpendBuilder = {\n accounts(accounts: RequestSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type ApproveSpendAccounts = {\n owner: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n pendingSpend: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype ApproveSpendBuilder = {\n accounts(accounts: ApproveSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CancelSpendAccounts = {\n owner: PublicKey;\n vault: PublicKey;\n pendingSpend: PublicKey;\n};\n\ntype CancelSpendBuilder = {\n accounts(accounts: CancelSpendAccounts): {\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 pendingSpend: Fetchable<RawPendingSpend>;\n };\n methods: {\n spend(amountUsdc: BN): SpendBuilder;\n requestSpend(amountUsdc: BN): RequestSpendBuilder;\n approveSpend(): ApproveSpendBuilder;\n cancelSpend(): CancelSpendBuilder;\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 RegisterServiceAccounts = {\n sponsor: PublicKey;\n service: PublicKey;\n serviceRegistry: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RegisterServiceBuilder = {\n accounts(accounts: RegisterServiceAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\n// Anchor's IDL serializes Rust enum variants as objects with a snake_case\n// field set to an empty struct. The TS client expects the same shape.\nexport type ServiceCategoryArg =\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\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 registerService(\n name: number[] | Uint8Array,\n category: ServiceCategoryArg,\n serviceUri: number[] | Uint8Array,\n ): RegisterServiceBuilder;\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","// Atomic spend + record_payment in one transaction. The agent signs the\n// spend half (credit_vault), the service keypair signs the reputation\n// half (record_payment). Both land or neither does — no half-states\n// where USDC moved but reputation didn't.\n//\n// Mirrors `Spender::pay()` in `clients/runtime/src/lib.rs`.\n\nimport { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport {\n Connection,\n type Keypair,\n PublicKey,\n sendAndConfirmTransaction,\n SystemProgram,\n Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport { decodeCreditVault, decodeSpendPolicy } from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n ReceiptAlreadyRecordedError,\n RecordPaymentError,\n ServiceInactiveError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport {\n agentProfilePda,\n agentServiceLinkPda,\n policyPda,\n receiptUsedPda,\n serviceRegistryPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n} from \"./programs.js\";\nimport type { CreditVaultAccount, Pubkeyish, SpendPolicyAccount } from \"./types.js\";\n\nexport type PayArgs = {\n /** Agent keypair — spends from the vault and pays tx fees. */\n agent: Keypair;\n /** Service keypair — co-signs the reputation half. Its pubkey must\n * match the service registered on chain. */\n service: Keypair;\n /** Vault owner. */\n owner: Pubkeyish;\n /** Amount in micro-USDC. */\n amountUsdc: number;\n /** 32-byte receipt hash. Common: `sha256(agent|service|tick|...)`. */\n receiptHash: Uint8Array;\n connection: Connection;\n};\n\nexport type PayResult = {\n signature: string;\n};\n\n/**\n * Atomic spend + record_payment. The vault burn and reputation accrual\n * happen in one transaction — without this, a service could mirror only\n * payments it actually received, but the agent's score wouldn't reflect\n * its own spending. Both sides of the SDK need this primitive to keep\n * reputation honest.\n */\nexport async function pay(args: PayArgs): Promise<PayResult> {\n const { agent, service, connection, amountUsdc } = args;\n const owner = toPubkey(args.owner);\n\n if (amountUsdc <= 0) {\n throw new ZeroAmountError();\n }\n if (args.receiptHash.length !== 32) {\n throw new Error(\n `pay: receiptHash must be 32 bytes, got ${args.receiptHash.length}`,\n );\n }\n\n const vaultAddr = vaultPda(owner, agent.publicKey);\n const policyAddr = policyPda(vaultAddr);\n\n // Pre-flight against the local guardrail — bails on obvious policy\n // violations before we burn a tx slot. Mirrors `spend()` in client.ts.\n const provider = buildProvider(connection, agent);\n const cv = creditVaultProgram(provider);\n const rep = reputationProgram(provider);\n\n const [rawVault, rawPolicy, currentSlot] = await Promise.all([\n cv.account.creditVault.fetchNullable(vaultAddr),\n cv.account.spendPolicy.fetchNullable(policyAddr),\n connection.getSlot(),\n ]);\n if (!rawVault) throw new AccountNotFoundError(vaultAddr.toBase58());\n if (!rawPolicy) throw new AccountNotFoundError(policyAddr.toBase58());\n const vault = decodeCreditVault(vaultAddr, rawVault);\n const policy = decodeSpendPolicy(policyAddr, rawPolicy);\n guardSpend({\n vault,\n policy,\n service: service.publicKey,\n amountUsdc,\n currentSlot,\n });\n\n const serviceTokenAccount = getAssociatedTokenAddress(\n vault.usdc_mint,\n service.publicKey,\n );\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n agent.publicKey,\n serviceTokenAccount,\n service.publicKey,\n vault.usdc_mint,\n );\n\n const agentProfile = agentProfilePda(agent.publicKey);\n const serviceRegistry = serviceRegistryPda(service.publicKey);\n const link = agentServiceLinkPda(agentProfile, serviceRegistry);\n const receipt = receiptUsedPda(args.receiptHash);\n\n // `.instruction()` is a stable Anchor API but isn't on our typed\n // builder wrappers (which only expose `.rpc()` for the typical happy\n // path). Cast at the boundary to compose multi-program txs ourselves.\n type InstructionBuilder = {\n instruction(): Promise<import(\"@solana/web3.js\").TransactionInstruction>;\n };\n const spendBuilder = cv.methods.spend(new BN(amountUsdc)).accounts({\n agent: agent.publicKey,\n vault: vaultAddr,\n policy: policyAddr,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n }) as unknown as InstructionBuilder;\n const recordBuilder = rep.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 }) as unknown as InstructionBuilder;\n const spendIx = await spendBuilder.instruction();\n const recordIx = await recordBuilder.instruction();\n\n const tx = new Transaction().add(createAtaIx, spendIx, recordIx);\n try {\n const signature = await sendAndConfirmTransaction(\n connection,\n tx,\n [agent, service],\n { commitment: \"confirmed\" },\n );\n return { signature };\n } catch (err) {\n throw mapPayError(err, {\n service: service.publicKey,\n amountUsdc,\n vault,\n policy,\n receiptHash: args.receiptHash,\n });\n }\n}\n\nfunction mapPayError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n receiptHash: Uint8Array;\n },\n): unknown {\n const message = err instanceof Error ? err.message : String(err);\n if (/already in use/i.test(message)) {\n return new ReceiptAlreadyRecordedError(ctx.receiptHash);\n }\n if (!(err instanceof AnchorError)) return err;\n // Credit vault errors are 6000-range; reputation errors overlap but\n // come from a different program — the AnchorError's program field\n // tells us which is throwing.\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 // Reputation errors:\n case 6000:\n return new RecordPaymentError(\"counter overflow on chain\");\n case 6011: // ServiceInactive in reputation program\n return new ServiceInactiveError(ctx.service.toBase58());\n default:\n return err;\n }\n}\n","// Agent-initiated half of the over-limit approval flow. Creates a\n// PendingSpend account the owner can later approve via mobile / CLI.\n// The returned `pendingSpend` pubkey is what callers poll for resolution.\n\nimport { BN } from \"@coral-xyz/anchor\";\nimport {\n Connection,\n type Keypair,\n PublicKey,\n SystemProgram,\n} from \"@solana/web3.js\";\nimport { getAssociatedTokenAddress } from \"./constants.js\";\nimport { decodeCreditVault } from \"./decoders.js\";\nimport { AccountNotFoundError } from \"./errors.js\";\nimport {\n pendingSpendPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport { buildProvider, creditVaultProgram } from \"./programs.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport type RequestSpendArgs = {\n agent: Keypair;\n owner: Pubkeyish;\n service: Pubkeyish;\n amountUsdc: number;\n connection: Connection;\n};\n\nexport type RequestSpendResult = {\n signature: string;\n /** The PendingSpend account the owner approves / cancels and the bot\n * polls for resolution. */\n pendingSpend: PublicKey;\n /** Vault nonce burned by this request. */\n nonce: number;\n};\n\nexport async function requestSpend(\n args: RequestSpendArgs,\n): Promise<RequestSpendResult> {\n const { agent, connection, amountUsdc } = args;\n const owner = toPubkey(args.owner);\n const service = toPubkey(args.service);\n\n if (amountUsdc <= 0) {\n throw new Error(\"requestSpend: amountUsdc must be > 0\");\n }\n\n const vaultAddr = vaultPda(owner, agent.publicKey);\n const provider = buildProvider(connection, agent);\n const cv = creditVaultProgram(provider);\n\n // Read current pending_count off the vault so we derive the correct\n // PendingSpend PDA seed without an extra account write.\n const rawVault = await cv.account.creditVault.fetchNullable(vaultAddr);\n if (!rawVault) throw new AccountNotFoundError(vaultAddr.toBase58());\n const vault = decodeCreditVault(vaultAddr, rawVault);\n const nonce = vault.pending_count;\n const pendingSpend = pendingSpendPda(vaultAddr, nonce);\n const serviceTokenAccount = getAssociatedTokenAddress(\n vault.usdc_mint,\n service,\n );\n\n const signature = await cv.methods\n .requestSpend(new BN(amountUsdc))\n .accounts({\n agent: agent.publicKey,\n vault: vaultAddr,\n serviceTokenAccount,\n pendingSpend,\n systemProgram: SystemProgram.programId,\n })\n .signers([agent])\n .rpc();\n\n return { signature, pendingSpend, nonce };\n}\n","// Register a service on chain so agents can pay against it and accrue\n// reputation. Two signers: sponsor (pays rent, submits tx) and service\n// (long-lived signing identity — its keypair will co-sign every future\n// `record_payment`). Idempotent only at the keypair level — re-running\n// with the same key fails because the registry PDA already exists.\n\nimport { SystemProgram, type Connection, type Keypair } from \"@solana/web3.js\";\nimport { serviceRegistryPda } from \"./pda.js\";\nimport {\n buildProvider,\n reputationProgram,\n type ServiceCategoryArg,\n} from \"./programs.js\";\nimport type { ServiceCategory } from \"./types.js\";\n\nconst NAME_BYTES = 32;\nconst URI_BYTES = 128;\n\nexport type RegisterServiceArgs = {\n /** Pays rent for the registry PDA and submits the tx. Typically the\n * same wallet that owns the service brand. */\n sponsor: Keypair;\n /** Long-lived service identity. Co-signs registration to prevent\n * someone else from squatting on the keypair. Must hold ~0.05 SOL\n * for downstream `record_payment` receipt PDAs to be fundable from\n * the service side. */\n service: Keypair;\n name: string;\n category: ServiceCategory;\n /** Off-chain metadata URI (pricing, docs, endpoint). Empty string is\n * allowed; chain just stores zero-padded bytes. */\n serviceUri?: string;\n connection: Connection;\n};\n\nexport type RegisterServiceResult = {\n signature: string;\n};\n\nexport async function registerService(\n args: RegisterServiceArgs,\n): Promise<RegisterServiceResult> {\n const { sponsor, service, connection } = args;\n\n if (args.name.length === 0) {\n throw new Error(\"registerService: name must not be empty\");\n }\n if (Buffer.byteLength(args.name, \"utf8\") > NAME_BYTES) {\n throw new Error(\n `registerService: name exceeds ${NAME_BYTES} bytes (got ${Buffer.byteLength(args.name, \"utf8\")})`,\n );\n }\n const uri = args.serviceUri ?? \"\";\n if (Buffer.byteLength(uri, \"utf8\") > URI_BYTES) {\n throw new Error(\n `registerService: serviceUri exceeds ${URI_BYTES} bytes (got ${Buffer.byteLength(uri, \"utf8\")})`,\n );\n }\n\n const registry = serviceRegistryPda(service.publicKey);\n const provider = buildProvider(connection, sponsor);\n const rep = reputationProgram(provider);\n\n const signature = await rep.methods\n .registerService(\n packFixed(args.name, NAME_BYTES),\n categoryArg(args.category),\n packFixed(uri, URI_BYTES),\n )\n .accounts({\n sponsor: sponsor.publicKey,\n service: service.publicKey,\n serviceRegistry: registry,\n systemProgram: SystemProgram.programId,\n })\n .signers([sponsor, service])\n .rpc();\n\n return { signature };\n}\n\nfunction packFixed(s: string, length: number): number[] {\n const buf = Buffer.alloc(length);\n buf.write(s, 0, \"utf8\");\n return Array.from(buf);\n}\n\nfunction categoryArg(c: ServiceCategory): ServiceCategoryArg {\n // Borsh wire format: empty-struct variants, snake_case keys.\n switch (c) {\n case \"DataFeed\":\n return { dataFeed: {} };\n case \"Compute\":\n return { compute: {} };\n case \"Swap\":\n return { swap: {} };\n case \"Rpc\":\n return { rpc: {} };\n case \"Other\":\n return { other: {} };\n }\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 { pay as payStandalone, type PayArgs, type PayResult } from \"./pay.js\";\nimport {\n requestSpend as requestSpendStandalone,\n type RequestSpendArgs,\n type RequestSpendResult,\n} from \"./request-spend.js\";\nimport {\n registerService as registerServiceStandalone,\n type RegisterServiceArgs,\n type RegisterServiceResult,\n} from \"./register-service.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 /// Atomic spend + record_payment in one transaction. Use this instead\n /// of `spend()` + `recordPayment()` when you want the vault burn and\n /// the reputation accrual to be all-or-nothing. The service keypair\n /// co-signs.\n async pay(\n args: Omit<PayArgs, \"connection\" | \"agent\" | \"owner\"> & { owner?: Pubkeyish },\n ): Promise<PayResult> {\n return payStandalone({\n agent: this.agent,\n owner: this.resolveOwner(args.owner),\n service: args.service,\n amountUsdc: args.amountUsdc,\n receiptHash: args.receiptHash,\n connection: this.connection,\n });\n }\n\n /// Submit an over-limit spend request the owner can approve from the\n /// mobile app. Returns the `pendingSpend` PDA so the bot can poll for\n /// resolution.\n async requestSpend(\n args: Omit<RequestSpendArgs, \"connection\" | \"agent\" | \"owner\"> & { owner?: Pubkeyish },\n ): Promise<RequestSpendResult> {\n return requestSpendStandalone({\n agent: this.agent,\n owner: this.resolveOwner(args.owner),\n service: args.service,\n amountUsdc: args.amountUsdc,\n connection: this.connection,\n });\n }\n\n /// Register a service on chain. The `sponsor` (typically `this.agent`'s\n /// owner wallet) pays rent; the `service` keypair is the long-lived\n /// identity that will co-sign every future `record_payment`.\n async registerService(\n args: Omit<RegisterServiceArgs, \"connection\">,\n ): Promise<RegisterServiceResult> {\n return registerServiceStandalone({ ...args, connection: this.connection });\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","#!/usr/bin/env node\n// agent-fuel CLI — thin shell over the SDK.\n//\n// Three surfaces:\n// * read commands (no key) : score / vault / policy / service\n// * action commands (--keypair) : pay / request-spend / register-service\n// * dev helpers : keygen / version\n//\n// Output is human-readable by default; pass --json for machine-readable\n// (one JSON object per command, suitable for piping into `jq`).\n\nimport { Command, Option } from \"commander\";\nimport { Connection, Keypair, PublicKey } from \"@solana/web3.js\";\nimport { randomBytes } from \"node:crypto\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nimport { AgentFuel } from \"./client.js\";\nimport type { Cluster } from \"./client.js\";\nimport { AccountNotFoundError } from \"./errors.js\";\nimport { pay } from \"./pay.js\";\nimport { registerService } from \"./register-service.js\";\nimport { requestSpend } from \"./request-spend.js\";\nimport type { ServiceCategory } from \"./types.js\";\n\nconst VERSION = \"0.3.1\";\n\nconst RPC_DEFAULTS: Record<Cluster, string> = {\n \"mainnet-beta\": \"https://api.mainnet-beta.solana.com\",\n devnet: \"https://api.devnet.solana.com\",\n testnet: \"https://api.testnet.solana.com\",\n localnet: \"http://127.0.0.1:8899\",\n};\n\nconst DEFAULT_API_BASE = \"https://api.agentfuel.online\";\n\ntype GlobalOpts = {\n cluster: Cluster;\n rpc?: string;\n apiBase: string;\n json: boolean;\n};\n\nfunction readGlobalOpts(cmd: Command): GlobalOpts {\n const root = rootOf(cmd);\n const o = root.opts<{\n cluster: Cluster;\n rpc?: string;\n apiBase?: string;\n json?: boolean;\n }>();\n const g: GlobalOpts = {\n cluster: o.cluster,\n apiBase: o.apiBase ?? DEFAULT_API_BASE,\n json: o.json ?? false,\n };\n if (o.rpc !== undefined) g.rpc = o.rpc;\n return g;\n}\n\nfunction rootOf(cmd: Command): Command {\n let cur = cmd;\n while (cur.parent) cur = cur.parent;\n return cur;\n}\n\nfunction connectionFor(g: GlobalOpts): Connection {\n return new Connection(g.rpc ?? RPC_DEFAULTS[g.cluster], \"confirmed\");\n}\n\nfunction loadKeypair(path: string): Keypair {\n let raw: string;\n try {\n raw = readFileSync(path, \"utf8\");\n } catch (e) {\n throw new Error(`could not read keypair file '${path}': ${errMsg(e)}`);\n }\n let bytes: number[];\n try {\n bytes = JSON.parse(raw);\n } catch (e) {\n throw new Error(\n `keypair file '${path}' is not valid JSON (expected a 64-byte array, the same format \\`solana-keygen new\\` writes): ${errMsg(e)}`,\n );\n }\n if (!Array.isArray(bytes) || bytes.length !== 64) {\n throw new Error(\n `keypair file '${path}' must contain a JSON array of exactly 64 bytes (got ${Array.isArray(bytes) ? `${bytes.length}` : typeof bytes})`,\n );\n }\n return Keypair.fromSecretKey(Uint8Array.from(bytes));\n}\n\nfunction parsePubkey(s: string, label: string): PublicKey {\n try {\n return new PublicKey(s);\n } catch {\n throw new Error(`${label} is not a valid base58 pubkey: ${s}`);\n }\n}\n\nfunction parseAmountToMicro(s: string): number {\n const n = Number(s);\n if (!Number.isFinite(n) || n <= 0) {\n throw new Error(`--amount must be a positive number (USDC), got '${s}'`);\n }\n const micro = Math.round(n * 1_000_000);\n if (micro <= 0) throw new Error(`--amount too small: ${s}`);\n return micro;\n}\n\nfunction parseCategory(s: string): ServiceCategory {\n const lower = s.toLowerCase();\n switch (lower) {\n case \"datafeed\":\n case \"data-feed\":\n return \"DataFeed\";\n case \"compute\":\n return \"Compute\";\n case \"swap\":\n return \"Swap\";\n case \"rpc\":\n return \"Rpc\";\n case \"other\":\n return \"Other\";\n default:\n throw new Error(\n `--category must be one of: DataFeed, Compute, Swap, Rpc, Other (got '${s}')`,\n );\n }\n}\n\nfunction parseReceiptHash(s: string | undefined): Uint8Array {\n if (!s) return randomBytes(32);\n const hex = s.startsWith(\"0x\") ? s.slice(2) : s;\n if (hex.length !== 64 || !/^[0-9a-fA-F]+$/.test(hex)) {\n throw new Error(\n `--receipt-hash must be 32 bytes hex (64 hex chars, with or without 0x prefix)`,\n );\n }\n return Uint8Array.from(Buffer.from(hex, \"hex\"));\n}\n\n// AgentFuel's constructor wants a keypair even for read-only flows; we\n// hand it a throwaway since nothing signs.\nfunction readOnlyFuel(g: GlobalOpts): AgentFuel {\n return new AgentFuel({\n agent: Keypair.generate(),\n cluster: g.cluster,\n rpc: connectionFor(g),\n apiBase: g.apiBase,\n });\n}\n\nfunction emit(g: GlobalOpts, human: () => string, data: unknown): void {\n if (g.json) {\n process.stdout.write(JSON.stringify(data, jsonReplacer, 2) + \"\\n\");\n } else {\n process.stdout.write(human() + \"\\n\");\n }\n}\n\nfunction jsonReplacer(_key: string, value: unknown): unknown {\n if (value instanceof PublicKey) return value.toBase58();\n if (value instanceof Uint8Array) return Buffer.from(value).toString(\"hex\");\n return value;\n}\n\nfunction errMsg(e: unknown): string {\n return e instanceof Error ? e.message : String(e);\n}\n\n// AccountNotFoundError carries a raw PDA — useless to a CLI user who has no\n// idea which derivation produced it. Wrap each command so we can rephrase\n// \"account not found: <PDA>\" into something that names the resource and the\n// inputs that produced the lookup.\nasync function rephraseNotFound<T>(\n fn: () => Promise<T>,\n reword: (pda: string) => string,\n): Promise<T> {\n try {\n return await fn();\n } catch (e) {\n if (e instanceof AccountNotFoundError) {\n throw new Error(reword(e.account));\n }\n throw e;\n }\n}\n\nfunction explorerUrl(cluster: Cluster, sig: string): string {\n const suffix = cluster === \"mainnet-beta\" ? \"\" : `?cluster=${cluster}`;\n return `https://explorer.solana.com/tx/${sig}${suffix}`;\n}\n\nconst program = new Command();\n\nprogram\n .name(\"agent-fuel\")\n .description(\n \"Agent Fuel CLI — inspect vaults, register services, fire payments from the terminal.\",\n )\n .version(VERSION)\n .addOption(\n new Option(\"--cluster <name>\", \"Solana cluster\")\n .choices([\"mainnet-beta\", \"devnet\", \"testnet\", \"localnet\"] as const)\n .default(\"devnet\" as Cluster),\n )\n .option(\"--rpc <url>\", \"override the default RPC URL for the chosen cluster\")\n .option(\n \"--api-base <url>\",\n \"Agent Fuel backend base URL (used by read commands)\",\n DEFAULT_API_BASE,\n )\n .option(\"--json\", \"emit machine-readable JSON instead of human text\");\n\n// ---------------------------------------------------------------------------\n// Read commands\n// ---------------------------------------------------------------------------\n\nprogram\n .command(\"score <agent>\")\n .description(\"Show the latest reputation snapshot for an agent (REST, no key).\")\n .action(async (agent: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const agentPk = parsePubkey(agent, \"<agent>\");\n const fuel = readOnlyFuel(g);\n const score = await rephraseNotFound(\n () => fuel.getScore(agentPk),\n () =>\n `no reputation data yet for agent ${agent} — the backend has no AgentProfile mirror for this agent (it hasn't received any recorded payments)`,\n );\n emit(g, () => formatScore(score), score);\n });\n\nprogram\n .command(\"vault <owner> <agent>\")\n .description(\"Show on-chain credit vault state for the (owner, agent) pair.\")\n .action(async (owner: string, agent: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const ownerPk = parsePubkey(owner, \"<owner>\");\n const agentPk = parsePubkey(agent, \"<agent>\");\n const fuel = readOnlyFuel(g);\n const vault = await rephraseNotFound(\n () => fuel.getVaultBalance({ owner: ownerPk, agent: agentPk }),\n (pda) =>\n `no vault found at ${pda} for owner=${owner} agent=${agent} — has init_vault been called for this pair?`,\n );\n emit(g, () => formatVault(vault), vault);\n });\n\nprogram\n .command(\"policy <owner> <agent>\")\n .description(\"Show the spend policy guarding an (owner, agent) vault.\")\n .action(async (owner: string, agent: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const ownerPk = parsePubkey(owner, \"<owner>\");\n const agentPk = parsePubkey(agent, \"<agent>\");\n const fuel = readOnlyFuel(g);\n const policy = await rephraseNotFound(\n () => fuel.getPolicy({ owner: ownerPk, agent: agentPk }),\n (pda) =>\n `no spend policy found at ${pda} for owner=${owner} agent=${agent} — policy is created alongside the vault, so this usually means init_vault hasn't been called`,\n );\n emit(g, () => formatPolicy(policy), policy);\n });\n\nprogram\n .command(\"service <authority>\")\n .description(\"Look up a registered service by its authority pubkey.\")\n .action(async (authority: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const authPk = parsePubkey(authority, \"<authority>\");\n const fuel = readOnlyFuel(g);\n const svc = await rephraseNotFound(\n () => fuel.checkService(authPk),\n (pda) =>\n `no service registered for authority ${authority} (registry PDA ${pda} doesn't exist) — run \\`agent-fuel register-service\\` to create one`,\n );\n emit(g, () => formatService(svc), svc);\n });\n\n// ---------------------------------------------------------------------------\n// Action commands\n// ---------------------------------------------------------------------------\n\nprogram\n .command(\"pay\")\n .description(\n \"Atomically spend from a vault and record the payment for reputation.\",\n )\n .requiredOption(\"--keypair <path>\", \"agent keypair (signs the spend half)\")\n .requiredOption(\"--service-keypair <path>\", \"service keypair (co-signs)\")\n .requiredOption(\"--owner <pubkey>\", \"vault owner pubkey\")\n .requiredOption(\"--amount <usdc>\", \"amount in USDC (e.g. 0.5)\")\n .option(\n \"--receipt-hash <hex>\",\n \"32-byte receipt hash as hex (auto-generated if omitted)\",\n )\n .action(\n async (\n opts: {\n keypair: string;\n serviceKeypair: string;\n owner: string;\n amount: string;\n receiptHash?: string;\n },\n cmd: Command,\n ) => {\n const g = readGlobalOpts(cmd);\n const agent = loadKeypair(opts.keypair);\n const service = loadKeypair(opts.serviceKeypair);\n const owner = parsePubkey(opts.owner, \"--owner\");\n const amountUsdc = parseAmountToMicro(opts.amount);\n const receiptHash = parseReceiptHash(opts.receiptHash);\n const result = await rephraseNotFound(\n () =>\n pay({\n agent,\n service,\n owner,\n amountUsdc,\n receiptHash,\n connection: connectionFor(g),\n }),\n (pda) =>\n `pay failed: account not found at ${pda} — either the vault for owner=${opts.owner} agent=${agent.publicKey.toBase58()} doesn't exist, or the spend policy hasn't been created. Try \\`agent-fuel vault ${opts.owner} ${agent.publicKey.toBase58()}\\` to verify.`,\n );\n emit(\n g,\n () =>\n [\n `paid ${opts.amount} USDC`,\n ` agent ${agent.publicKey.toBase58()}`,\n ` service ${service.publicKey.toBase58()}`,\n ` signature ${result.signature}`,\n ` ${explorerUrl(g.cluster, result.signature)}`,\n ].join(\"\\n\"),\n { ...result, receipt_hash: Buffer.from(receiptHash).toString(\"hex\") },\n );\n },\n );\n\nprogram\n .command(\"request-spend\")\n .description(\n \"Submit an over-limit spend that the owner must approve from the app.\",\n )\n .requiredOption(\"--keypair <path>\", \"agent keypair (submits the request)\")\n .requiredOption(\"--owner <pubkey>\", \"vault owner pubkey\")\n .requiredOption(\"--service <pubkey>\", \"service authority pubkey\")\n .requiredOption(\"--amount <usdc>\", \"amount in USDC (e.g. 5.0)\")\n .action(\n async (\n opts: { keypair: string; owner: string; service: string; amount: string },\n cmd: Command,\n ) => {\n const g = readGlobalOpts(cmd);\n const agent = loadKeypair(opts.keypair);\n const owner = parsePubkey(opts.owner, \"--owner\");\n const service = parsePubkey(opts.service, \"--service\");\n const amountUsdc = parseAmountToMicro(opts.amount);\n const result = await requestSpend({\n agent,\n owner,\n service,\n amountUsdc,\n connection: connectionFor(g),\n });\n emit(\n g,\n () =>\n [\n `requested ${opts.amount} USDC (over-limit, awaiting owner approval)`,\n ` pending ${result.pendingSpend.toBase58()}`,\n ` nonce ${result.nonce}`,\n ` signature ${result.signature}`,\n ` ${explorerUrl(g.cluster, result.signature)}`,\n ].join(\"\\n\"),\n result,\n );\n },\n );\n\nprogram\n .command(\"register-service\")\n .description(\"Register a new service on chain (two-signer).\")\n .requiredOption(\"--sponsor <path>\", \"sponsor keypair (pays rent, submits tx)\")\n .requiredOption(\n \"--service-keypair <path>\",\n \"service keypair (long-lived signing identity)\",\n )\n .requiredOption(\"--name <name>\", \"service name (max 32 bytes UTF-8)\")\n .requiredOption(\n \"--category <c>\",\n \"DataFeed | Compute | Swap | Rpc | Other\",\n )\n .option(\"--uri <url>\", \"optional off-chain metadata URI (max 128 bytes)\")\n .action(\n async (\n opts: {\n sponsor: string;\n serviceKeypair: string;\n name: string;\n category: string;\n uri?: string;\n },\n cmd: Command,\n ) => {\n const g = readGlobalOpts(cmd);\n const sponsor = loadKeypair(opts.sponsor);\n const service = loadKeypair(opts.serviceKeypair);\n const category = parseCategory(opts.category);\n const registerArgs: import(\"./register-service.js\").RegisterServiceArgs = {\n sponsor,\n service,\n name: opts.name,\n category,\n connection: connectionFor(g),\n };\n if (opts.uri !== undefined) registerArgs.serviceUri = opts.uri;\n const result = await registerService(registerArgs);\n emit(\n g,\n () =>\n [\n `registered service \"${opts.name}\" (${category})`,\n ` authority ${service.publicKey.toBase58()}`,\n ` sponsor ${sponsor.publicKey.toBase58()}`,\n ` signature ${result.signature}`,\n ` ${explorerUrl(g.cluster, result.signature)}`,\n ].join(\"\\n\"),\n result,\n );\n },\n );\n\n// ---------------------------------------------------------------------------\n// Dev helpers\n// ---------------------------------------------------------------------------\n\nprogram\n .command(\"keygen\")\n .description(\n \"Generate a new Solana keypair (compatible with solana-keygen JSON format).\",\n )\n .option(\n \"--out <path>\",\n \"write the secret-key JSON to a file (parent dirs created)\",\n )\n .action((opts: { out?: string }, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const kp = Keypair.generate();\n const bytes = Array.from(kp.secretKey);\n const pub = kp.publicKey.toBase58();\n if (opts.out) {\n mkdirSync(dirname(opts.out), { recursive: true });\n writeFileSync(opts.out, JSON.stringify(bytes), { mode: 0o600 });\n emit(\n g,\n () => `wrote keypair to ${opts.out}\\n pubkey ${pub}`,\n { pubkey: pub, path: opts.out },\n );\n } else {\n // No --out: pubkey to stdout in human mode, secret to stderr so the\n // user can choose to redirect it. JSON mode dumps both together.\n if (g.json) {\n emit(g, () => \"\", { pubkey: pub, secret_key: bytes });\n } else {\n process.stderr.write(JSON.stringify(bytes) + \"\\n\");\n process.stdout.write(`pubkey ${pub}\\n`);\n }\n }\n });\n\n// ---------------------------------------------------------------------------\n// Formatters\n// ---------------------------------------------------------------------------\n\nfunction formatScore(s: import(\"./types.js\").ReputationLookup): string {\n return [\n `agent ${s.agent}`,\n `score ${s.score ?? \"(unscored)\"}`,\n `transactions ${s.total_transactions}`,\n `services used ${s.services_used}`,\n `volume USDC ${micro(s.total_volume_usdc)}`,\n `consecutive ok ${s.consecutive_success}`,\n `feedback total ${s.total_feedback_count}`,\n `feedback negative ${s.active_negative_feedback_count}`,\n `last active slot ${s.last_active_slot}`,\n `updated ${s.updated_at}`,\n ].join(\"\\n\");\n}\n\nfunction formatVault(v: import(\"./types.js\").CreditVaultAccount): string {\n return [\n `vault ${v.pubkey.toBase58()}`,\n `owner ${v.owner.toBase58()}`,\n `agent ${v.agent.toBase58()}`,\n `usdc mint ${v.usdc_mint.toBase58()}`,\n `vault token acct ${v.vault_token_account.toBase58()}`,\n `balance ${micro(v.balance)} USDC`,\n ` deposited ${micro(v.total_deposited)}`,\n ` withdrawn ${micro(v.total_withdrawn)}`,\n ` spent ${micro(v.total_spent)}`,\n ` claimed ${micro(v.total_claimed)}`,\n `frozen ${v.frozen}`,\n `pending count ${v.pending_count}`,\n `last active slot ${v.last_active_slot}`,\n ].join(\"\\n\");\n}\n\nfunction formatPolicy(p: import(\"./types.js\").SpendPolicyAccount): string {\n const whitelist = p.whitelist.length\n ? p.whitelist.map((pk) => ` - ${pk.toBase58()}`).join(\"\\n\")\n : \" (empty — no whitelist enforcement)\";\n return [\n `policy ${p.pubkey.toBase58()}`,\n `vault ${p.vault.toBase58()}`,\n `per-tx limit ${micro(p.per_tx_limit_usdc)} USDC`,\n `hourly limit ${micro(p.hourly_limit_usdc)} USDC`,\n `lifetime limit ${micro(p.lifetime_limit_usdc)} USDC`,\n `hourly window slot ${p.hourly_window_start_slot}`,\n `hourly spent ${micro(p.hourly_window_spent_usdc)} USDC`,\n `allow post-pay ${p.allow_post_pay}`,\n `whitelist:`,\n whitelist,\n ].join(\"\\n\");\n}\n\nfunction formatService(s: import(\"./types.js\").ServiceRegistryAccount): string {\n return [\n `registry ${s.pubkey.toBase58()}`,\n `authority ${s.authority.toBase58()}`,\n `name ${s.name}`,\n `category ${s.category}`,\n `active ${s.active}`,\n `agents served ${s.total_agents_served}`,\n `volume received ${micro(s.total_volume_received_usdc)} USDC`,\n `first active slot ${s.first_active_slot}`,\n `last active slot ${s.last_active_slot}`,\n ].join(\"\\n\");\n}\n\nfunction micro(n: number): string {\n return (n / 1_000_000).toFixed(6);\n}\n\n// ---------------------------------------------------------------------------\n// Entry point — surface SDK errors as one-line messages instead of stack\n// traces, and exit non-zero so shell pipelines can branch on success.\n// ---------------------------------------------------------------------------\n\nprogram.exitOverride();\n\nprogram.parseAsync(process.argv).catch((err: unknown) => {\n // Commander's --help and --version go through exitOverride() as throws;\n // they're not real errors and shouldn't print to stderr.\n if (typeof err === \"object\" && err !== null && \"code\" in err) {\n const code = (err as { code: unknown }).code;\n if (code === \"commander.help\" || code === \"commander.helpDisplayed\" || code === \"commander.version\") {\n process.exit(0);\n }\n }\n const msg = errMsg(err);\n process.stderr.write(`agent-fuel: ${msg}\\n`);\n process.exit(1);\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/pay.ts","../src/request-spend.ts","../src/register-service.ts","../src/client.ts","../src/cli.ts"],"names":["PublicKey","TransactionInstruction","SystemProgram","AnchorProvider","Wallet","Program","BN","Transaction","sendAndConfirmTransaction","AnchorError","Connection","DEFAULT_API_BASE","readFileSync","Keypair","micro","randomBytes","Command","Option","mkdirSync","dirname","writeFileSync"],"mappings":"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","file":"cli.cjs","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 {\n RawCreditVault,\n RawPendingSpend,\n RawServiceRegistry,\n RawSpendPolicy,\n} from \"./programs.js\";\nimport type {\n CreditVaultAccount,\n PendingSpendAccount,\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 pending_count: bnToNum(raw.pendingCount),\n };\n}\n\nexport function decodePendingSpend(\n pubkey: PublicKey,\n raw: RawPendingSpend,\n): PendingSpendAccount {\n return {\n pubkey,\n vault: raw.vault,\n agent: raw.agent,\n service: raw.service,\n amount_usdc: bnToNum(raw.amountUsdc),\n nonce: bnToNum(raw.nonce),\n requested_slot: bnToNum(raw.requestedSlot),\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\": \"approve_spend\",\n \"discriminator\": [\n 248,\n 201,\n 151,\n 15,\n 28,\n 162,\n 112,\n 90\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\": \"owner\"\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\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"pending_spend.nonce\",\n \"account\": \"PendingSpend\"\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 {\n \"name\": \"cancel_spend\",\n \"discriminator\": [\n 122,\n 254,\n 101,\n 132,\n 241,\n 232,\n 205,\n 179\n ],\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"writable\": true,\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\": \"owner\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.agent\",\n \"account\": \"CreditVault\"\n }\n ]\n }\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"pending_spend.nonce\",\n \"account\": \"PendingSpend\"\n }\n ]\n }\n }\n ],\n \"args\": []\n },\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\": \"request_spend\",\n \"discriminator\": [\n 127,\n 12,\n 23,\n 75,\n 137,\n 178,\n 148,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"agent\",\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\": \"service_token_account\",\n \"docs\": [\n \"The recipient token account. We only need it for its `owner` field\",\n \"(the service pubkey we record in PendingSpend); mint constraint is\",\n \"belt-and-suspenders since `approve_spend` re-checks both.\"\n ]\n },\n {\n \"name\": \"pending_spend\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 112,\n 101,\n 110,\n 100,\n 105,\n 110,\n 103\n ]\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault\"\n },\n {\n \"kind\": \"account\",\n \"path\": \"vault.pending_count\",\n \"account\": \"CreditVault\"\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 },\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\": \"PendingSpend\",\n \"discriminator\": [\n 193,\n 205,\n 85,\n 66,\n 25,\n 3,\n 67,\n 134\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\": \"SpendRejected\",\n \"discriminator\": [\n 22,\n 233,\n 208,\n 109,\n 202,\n 231,\n 175,\n 22\n ]\n },\n {\n \"name\": \"SpendRequested\",\n \"discriminator\": [\n 144,\n 207,\n 254,\n 247,\n 81,\n 146,\n 84,\n 87\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 \"code\": 6010,\n \"name\": \"PendingSpendVaultMismatch\",\n \"msg\": \"Pending spend belongs to a different vault\"\n },\n {\n \"code\": 6011,\n \"name\": \"PendingNonceOverflow\",\n \"msg\": \"Pending spend counter would overflow\"\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\": \"pending_count\",\n \"docs\": [\n \"Monotonic counter used as a PDA seed for PendingSpend accounts so\",\n \"every approval request gets a unique deterministic address.\",\n \"Borrowed 8 bytes from the original 64-byte padding so the account\",\n \"size stays at `ACCOUNT_SIZE` and existing vaults need no migration.\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 56\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\": \"PendingSpend\",\n \"docs\": [\n \"A spend request that exceeded one of the policy's rate limits. The agent\",\n \"creates this account by calling `request_spend`; the owner reviews from\",\n \"the mobile Alerts tab and either calls `approve_spend` (PDA-signed CPI\",\n \"transfer, account closed) or `cancel_spend` (account closed, no transfer).\",\n \"\",\n \"Seeded by `[\\\"pending\\\", vault, nonce_le]` where `nonce` is the value of\",\n \"`vault.pending_count` at request time, so each request has a unique\",\n \"deterministic address that both the agent and the owner can derive.\"\n ],\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 \"docs\": [\n \"Owner of the destination token account (mirrors how `Spent` records\",\n \"service: `service_token_account.owner`).\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"requested_slot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"_padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 31\n ]\n }\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\": \"SpendRejected\",\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\": \"pending_spend\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"SpendRequested\",\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\": \"pending_spend\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"amount_usdc\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slot\",\n \"type\": \"u64\"\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/** PendingSpend PDA — created by `request_spend`, consumed (and closed) by\n * either `approve_spend` (CPIs into `spend`, transfers USDC) or\n * `cancel_spend` (closes without transfer). Nonce is the vault's\n * `pending_count` at request time, so every request gets a fresh PDA. */\nexport function pendingSpendPda(vault: Pubkeyish, nonce: number | bigint): PublicKey {\n const nonceBuf = Buffer.alloc(8);\n // u64 little-endian — matches Rust `nonce.to_le_bytes()`.\n nonceBuf.writeBigUInt64LE(typeof nonce === \"bigint\" ? nonce : BigInt(nonce));\n const [pda] = PublicKey.findProgramAddressSync(\n [Buffer.from(\"pending\"), toPubkey(vault).toBuffer(), nonceBuf],\n PROGRAM_IDS.creditVault,\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 pendingCount: BN;\n};\n\nexport type RawPendingSpend = {\n vault: PublicKey;\n agent: PublicKey;\n service: PublicKey;\n amountUsdc: BN;\n nonce: BN;\n requestedSlot: 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 RequestSpendAccounts = {\n agent: PublicKey;\n vault: PublicKey;\n serviceTokenAccount: PublicKey;\n pendingSpend: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RequestSpendBuilder = {\n accounts(accounts: RequestSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type ApproveSpendAccounts = {\n owner: PublicKey;\n vault: PublicKey;\n policy: PublicKey;\n pendingSpend: PublicKey;\n vaultTokenAccount: PublicKey;\n serviceTokenAccount: PublicKey;\n tokenProgram: PublicKey;\n};\n\ntype ApproveSpendBuilder = {\n accounts(accounts: ApproveSpendAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\nexport type CancelSpendAccounts = {\n owner: PublicKey;\n vault: PublicKey;\n pendingSpend: PublicKey;\n};\n\ntype CancelSpendBuilder = {\n accounts(accounts: CancelSpendAccounts): {\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 pendingSpend: Fetchable<RawPendingSpend>;\n };\n methods: {\n spend(amountUsdc: BN): SpendBuilder;\n requestSpend(amountUsdc: BN): RequestSpendBuilder;\n approveSpend(): ApproveSpendBuilder;\n cancelSpend(): CancelSpendBuilder;\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 RegisterServiceAccounts = {\n sponsor: PublicKey;\n service: PublicKey;\n serviceRegistry: PublicKey;\n systemProgram: PublicKey;\n};\n\ntype RegisterServiceBuilder = {\n accounts(accounts: RegisterServiceAccounts): {\n signers(signers: readonly Keypair[]): {\n rpc(opts?: ConfirmOptions): Promise<string>;\n };\n };\n};\n\n// Anchor's IDL serializes Rust enum variants as objects with a snake_case\n// field set to an empty struct. The TS client expects the same shape.\nexport type ServiceCategoryArg =\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\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 registerService(\n name: number[] | Uint8Array,\n category: ServiceCategoryArg,\n serviceUri: number[] | Uint8Array,\n ): RegisterServiceBuilder;\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","// Atomic spend + record_payment in one transaction. The agent signs the\n// spend half (credit_vault), the service keypair signs the reputation\n// half (record_payment). Both land or neither does — no half-states\n// where USDC moved but reputation didn't.\n//\n// Mirrors `Spender::pay()` in `clients/runtime/src/lib.rs`.\n\nimport { AnchorError, BN } from \"@coral-xyz/anchor\";\nimport {\n Connection,\n type Keypair,\n PublicKey,\n sendAndConfirmTransaction,\n SystemProgram,\n Transaction,\n} from \"@solana/web3.js\";\nimport {\n TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountIdempotentInstruction,\n getAssociatedTokenAddress,\n} from \"./constants.js\";\nimport { decodeCreditVault, decodeSpendPolicy } from \"./decoders.js\";\nimport {\n AccountNotFoundError,\n HourlyLimitExceededError,\n LifetimeLimitExceededError,\n NotWhitelistedError,\n PerTxLimitExceededError,\n ReceiptAlreadyRecordedError,\n RecordPaymentError,\n ServiceInactiveError,\n VaultFrozenError,\n ZeroAmountError,\n} from \"./errors.js\";\nimport { guardSpend } from \"./guardrails.js\";\nimport {\n agentProfilePda,\n agentServiceLinkPda,\n policyPda,\n receiptUsedPda,\n serviceRegistryPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport {\n buildProvider,\n creditVaultProgram,\n reputationProgram,\n} from \"./programs.js\";\nimport type { CreditVaultAccount, Pubkeyish, SpendPolicyAccount } from \"./types.js\";\n\nexport type PayArgs = {\n /** Agent keypair — spends from the vault and pays tx fees. */\n agent: Keypair;\n /** Service keypair — co-signs the reputation half. Its pubkey must\n * match the service registered on chain. */\n service: Keypair;\n /** Vault owner. */\n owner: Pubkeyish;\n /** Amount in micro-USDC. */\n amountUsdc: number;\n /** 32-byte receipt hash. Common: `sha256(agent|service|tick|...)`. */\n receiptHash: Uint8Array;\n connection: Connection;\n};\n\nexport type PayResult = {\n signature: string;\n};\n\n/**\n * Atomic spend + record_payment. The vault burn and reputation accrual\n * happen in one transaction — without this, a service could mirror only\n * payments it actually received, but the agent's score wouldn't reflect\n * its own spending. Both sides of the SDK need this primitive to keep\n * reputation honest.\n */\nexport async function pay(args: PayArgs): Promise<PayResult> {\n const { agent, service, connection, amountUsdc } = args;\n const owner = toPubkey(args.owner);\n\n if (amountUsdc <= 0) {\n throw new ZeroAmountError();\n }\n if (args.receiptHash.length !== 32) {\n throw new Error(\n `pay: receiptHash must be 32 bytes, got ${args.receiptHash.length}`,\n );\n }\n\n const vaultAddr = vaultPda(owner, agent.publicKey);\n const policyAddr = policyPda(vaultAddr);\n\n // Pre-flight against the local guardrail — bails on obvious policy\n // violations before we burn a tx slot. Mirrors `spend()` in client.ts.\n const provider = buildProvider(connection, agent);\n const cv = creditVaultProgram(provider);\n const rep = reputationProgram(provider);\n\n const [rawVault, rawPolicy, currentSlot] = await Promise.all([\n cv.account.creditVault.fetchNullable(vaultAddr),\n cv.account.spendPolicy.fetchNullable(policyAddr),\n connection.getSlot(),\n ]);\n if (!rawVault) throw new AccountNotFoundError(vaultAddr.toBase58());\n if (!rawPolicy) throw new AccountNotFoundError(policyAddr.toBase58());\n const vault = decodeCreditVault(vaultAddr, rawVault);\n const policy = decodeSpendPolicy(policyAddr, rawPolicy);\n guardSpend({\n vault,\n policy,\n service: service.publicKey,\n amountUsdc,\n currentSlot,\n });\n\n const serviceTokenAccount = getAssociatedTokenAddress(\n vault.usdc_mint,\n service.publicKey,\n );\n const createAtaIx = createAssociatedTokenAccountIdempotentInstruction(\n agent.publicKey,\n serviceTokenAccount,\n service.publicKey,\n vault.usdc_mint,\n );\n\n const agentProfile = agentProfilePda(agent.publicKey);\n const serviceRegistry = serviceRegistryPda(service.publicKey);\n const link = agentServiceLinkPda(agentProfile, serviceRegistry);\n const receipt = receiptUsedPda(args.receiptHash);\n\n // `.instruction()` is a stable Anchor API but isn't on our typed\n // builder wrappers (which only expose `.rpc()` for the typical happy\n // path). Cast at the boundary to compose multi-program txs ourselves.\n type InstructionBuilder = {\n instruction(): Promise<import(\"@solana/web3.js\").TransactionInstruction>;\n };\n const spendBuilder = cv.methods.spend(new BN(amountUsdc)).accounts({\n agent: agent.publicKey,\n vault: vaultAddr,\n policy: policyAddr,\n vaultTokenAccount: vault.vault_token_account,\n serviceTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID,\n }) as unknown as InstructionBuilder;\n const recordBuilder = rep.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 }) as unknown as InstructionBuilder;\n // Tack on compute_score so the on-chain agent_profile.score (and the\n // backend's `agents.score` mirror, fed only by ScoreComputed events)\n // refreshes in the same tx as the payment. Without this every paying\n // agent's score stays at 0 in the DB until someone manually calls\n // compute_score — which nothing in the codebase does. The instruction\n // is permissionless and reads the counters record_payment just bumped,\n // so the score reflects the freshly-incremented totals.\n const computeBuilder = rep.methods.computeScore().accounts({\n caller: agent.publicKey,\n agentProfile,\n }) as unknown as InstructionBuilder;\n const [spendIx, recordIx, computeIx] = await Promise.all([\n spendBuilder.instruction(),\n recordBuilder.instruction(),\n computeBuilder.instruction(),\n ]);\n\n const tx = new Transaction().add(createAtaIx, spendIx, recordIx, computeIx);\n try {\n const signature = await sendAndConfirmTransaction(\n connection,\n tx,\n [agent, service],\n { commitment: \"confirmed\" },\n );\n return { signature };\n } catch (err) {\n throw mapPayError(err, {\n service: service.publicKey,\n amountUsdc,\n vault,\n policy,\n receiptHash: args.receiptHash,\n });\n }\n}\n\nfunction mapPayError(\n err: unknown,\n ctx: {\n service: PublicKey;\n amountUsdc: number;\n vault: CreditVaultAccount;\n policy: SpendPolicyAccount;\n receiptHash: Uint8Array;\n },\n): unknown {\n const message = err instanceof Error ? err.message : String(err);\n if (/already in use/i.test(message)) {\n return new ReceiptAlreadyRecordedError(ctx.receiptHash);\n }\n if (!(err instanceof AnchorError)) return err;\n // Credit vault errors are 6000-range; reputation errors overlap but\n // come from a different program — the AnchorError's program field\n // tells us which is throwing.\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 // Reputation errors:\n case 6000:\n return new RecordPaymentError(\"counter overflow on chain\");\n case 6011: // ServiceInactive in reputation program\n return new ServiceInactiveError(ctx.service.toBase58());\n default:\n return err;\n }\n}\n","// Agent-initiated half of the over-limit approval flow. Creates a\n// PendingSpend account the owner can later approve via mobile / CLI.\n// The returned `pendingSpend` pubkey is what callers poll for resolution.\n\nimport { BN } from \"@coral-xyz/anchor\";\nimport {\n Connection,\n type Keypair,\n PublicKey,\n SystemProgram,\n} from \"@solana/web3.js\";\nimport { getAssociatedTokenAddress } from \"./constants.js\";\nimport { decodeCreditVault } from \"./decoders.js\";\nimport { AccountNotFoundError } from \"./errors.js\";\nimport {\n pendingSpendPda,\n toPubkey,\n vaultPda,\n} from \"./pda.js\";\nimport { buildProvider, creditVaultProgram } from \"./programs.js\";\nimport type { Pubkeyish } from \"./types.js\";\n\nexport type RequestSpendArgs = {\n agent: Keypair;\n owner: Pubkeyish;\n service: Pubkeyish;\n amountUsdc: number;\n connection: Connection;\n};\n\nexport type RequestSpendResult = {\n signature: string;\n /** The PendingSpend account the owner approves / cancels and the bot\n * polls for resolution. */\n pendingSpend: PublicKey;\n /** Vault nonce burned by this request. */\n nonce: number;\n};\n\nexport async function requestSpend(\n args: RequestSpendArgs,\n): Promise<RequestSpendResult> {\n const { agent, connection, amountUsdc } = args;\n const owner = toPubkey(args.owner);\n const service = toPubkey(args.service);\n\n if (amountUsdc <= 0) {\n throw new Error(\"requestSpend: amountUsdc must be > 0\");\n }\n\n const vaultAddr = vaultPda(owner, agent.publicKey);\n const provider = buildProvider(connection, agent);\n const cv = creditVaultProgram(provider);\n\n // Read current pending_count off the vault so we derive the correct\n // PendingSpend PDA seed without an extra account write.\n const rawVault = await cv.account.creditVault.fetchNullable(vaultAddr);\n if (!rawVault) throw new AccountNotFoundError(vaultAddr.toBase58());\n const vault = decodeCreditVault(vaultAddr, rawVault);\n const nonce = vault.pending_count;\n const pendingSpend = pendingSpendPda(vaultAddr, nonce);\n const serviceTokenAccount = getAssociatedTokenAddress(\n vault.usdc_mint,\n service,\n );\n\n const signature = await cv.methods\n .requestSpend(new BN(amountUsdc))\n .accounts({\n agent: agent.publicKey,\n vault: vaultAddr,\n serviceTokenAccount,\n pendingSpend,\n systemProgram: SystemProgram.programId,\n })\n .signers([agent])\n .rpc();\n\n return { signature, pendingSpend, nonce };\n}\n","// Register a service on chain so agents can pay against it and accrue\n// reputation. Two signers: sponsor (pays rent, submits tx) and service\n// (long-lived signing identity — its keypair will co-sign every future\n// `record_payment`). Idempotent only at the keypair level — re-running\n// with the same key fails because the registry PDA already exists.\n\nimport { SystemProgram, type Connection, type Keypair } from \"@solana/web3.js\";\nimport { serviceRegistryPda } from \"./pda.js\";\nimport {\n buildProvider,\n reputationProgram,\n type ServiceCategoryArg,\n} from \"./programs.js\";\nimport type { ServiceCategory } from \"./types.js\";\n\nconst NAME_BYTES = 32;\nconst URI_BYTES = 128;\n\nexport type RegisterServiceArgs = {\n /** Pays rent for the registry PDA and submits the tx. Typically the\n * same wallet that owns the service brand. */\n sponsor: Keypair;\n /** Long-lived service identity. Co-signs registration to prevent\n * someone else from squatting on the keypair. Must hold ~0.05 SOL\n * for downstream `record_payment` receipt PDAs to be fundable from\n * the service side. */\n service: Keypair;\n name: string;\n category: ServiceCategory;\n /** Off-chain metadata URI (pricing, docs, endpoint). Empty string is\n * allowed; chain just stores zero-padded bytes. */\n serviceUri?: string;\n connection: Connection;\n};\n\nexport type RegisterServiceResult = {\n signature: string;\n};\n\nexport async function registerService(\n args: RegisterServiceArgs,\n): Promise<RegisterServiceResult> {\n const { sponsor, service, connection } = args;\n\n if (args.name.length === 0) {\n throw new Error(\"registerService: name must not be empty\");\n }\n if (Buffer.byteLength(args.name, \"utf8\") > NAME_BYTES) {\n throw new Error(\n `registerService: name exceeds ${NAME_BYTES} bytes (got ${Buffer.byteLength(args.name, \"utf8\")})`,\n );\n }\n const uri = args.serviceUri ?? \"\";\n if (Buffer.byteLength(uri, \"utf8\") > URI_BYTES) {\n throw new Error(\n `registerService: serviceUri exceeds ${URI_BYTES} bytes (got ${Buffer.byteLength(uri, \"utf8\")})`,\n );\n }\n\n const registry = serviceRegistryPda(service.publicKey);\n const provider = buildProvider(connection, sponsor);\n const rep = reputationProgram(provider);\n\n const signature = await rep.methods\n .registerService(\n packFixed(args.name, NAME_BYTES),\n categoryArg(args.category),\n packFixed(uri, URI_BYTES),\n )\n .accounts({\n sponsor: sponsor.publicKey,\n service: service.publicKey,\n serviceRegistry: registry,\n systemProgram: SystemProgram.programId,\n })\n .signers([sponsor, service])\n .rpc();\n\n return { signature };\n}\n\nfunction packFixed(s: string, length: number): number[] {\n const buf = Buffer.alloc(length);\n buf.write(s, 0, \"utf8\");\n return Array.from(buf);\n}\n\nfunction categoryArg(c: ServiceCategory): ServiceCategoryArg {\n // Borsh wire format: empty-struct variants, snake_case keys.\n switch (c) {\n case \"DataFeed\":\n return { dataFeed: {} };\n case \"Compute\":\n return { compute: {} };\n case \"Swap\":\n return { swap: {} };\n case \"Rpc\":\n return { rpc: {} };\n case \"Other\":\n return { other: {} };\n }\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 { pay as payStandalone, type PayArgs, type PayResult } from \"./pay.js\";\nimport {\n requestSpend as requestSpendStandalone,\n type RequestSpendArgs,\n type RequestSpendResult,\n} from \"./request-spend.js\";\nimport {\n registerService as registerServiceStandalone,\n type RegisterServiceArgs,\n type RegisterServiceResult,\n} from \"./register-service.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 /// Atomic spend + record_payment in one transaction. Use this instead\n /// of `spend()` + `recordPayment()` when you want the vault burn and\n /// the reputation accrual to be all-or-nothing. The service keypair\n /// co-signs.\n async pay(\n args: Omit<PayArgs, \"connection\" | \"agent\" | \"owner\"> & { owner?: Pubkeyish },\n ): Promise<PayResult> {\n return payStandalone({\n agent: this.agent,\n owner: this.resolveOwner(args.owner),\n service: args.service,\n amountUsdc: args.amountUsdc,\n receiptHash: args.receiptHash,\n connection: this.connection,\n });\n }\n\n /// Submit an over-limit spend request the owner can approve from the\n /// mobile app. Returns the `pendingSpend` PDA so the bot can poll for\n /// resolution.\n async requestSpend(\n args: Omit<RequestSpendArgs, \"connection\" | \"agent\" | \"owner\"> & { owner?: Pubkeyish },\n ): Promise<RequestSpendResult> {\n return requestSpendStandalone({\n agent: this.agent,\n owner: this.resolveOwner(args.owner),\n service: args.service,\n amountUsdc: args.amountUsdc,\n connection: this.connection,\n });\n }\n\n /// Register a service on chain. The `sponsor` (typically `this.agent`'s\n /// owner wallet) pays rent; the `service` keypair is the long-lived\n /// identity that will co-sign every future `record_payment`.\n async registerService(\n args: Omit<RegisterServiceArgs, \"connection\">,\n ): Promise<RegisterServiceResult> {\n return registerServiceStandalone({ ...args, connection: this.connection });\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","#!/usr/bin/env node\n// agent-fuel CLI — thin shell over the SDK.\n//\n// Three surfaces:\n// * read commands (no key) : score / vault / policy / service\n// * action commands (--keypair) : pay / request-spend / register-service\n// * dev helpers : keygen / version\n//\n// Output is human-readable by default; pass --json for machine-readable\n// (one JSON object per command, suitable for piping into `jq`).\n\nimport { Command, Option } from \"commander\";\nimport { Connection, Keypair, PublicKey } from \"@solana/web3.js\";\nimport { randomBytes } from \"node:crypto\";\nimport { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nimport { AgentFuel } from \"./client.js\";\nimport type { Cluster } from \"./client.js\";\nimport { AccountNotFoundError } from \"./errors.js\";\nimport { pay } from \"./pay.js\";\nimport { registerService } from \"./register-service.js\";\nimport { requestSpend } from \"./request-spend.js\";\nimport type { ServiceCategory } from \"./types.js\";\n\nconst VERSION = \"0.3.2\";\n\nconst RPC_DEFAULTS: Record<Cluster, string> = {\n \"mainnet-beta\": \"https://api.mainnet-beta.solana.com\",\n devnet: \"https://api.devnet.solana.com\",\n testnet: \"https://api.testnet.solana.com\",\n localnet: \"http://127.0.0.1:8899\",\n};\n\nconst DEFAULT_API_BASE = \"https://api.agentfuel.online\";\n\ntype GlobalOpts = {\n cluster: Cluster;\n rpc?: string;\n apiBase: string;\n json: boolean;\n};\n\nfunction readGlobalOpts(cmd: Command): GlobalOpts {\n const root = rootOf(cmd);\n const o = root.opts<{\n cluster: Cluster;\n rpc?: string;\n apiBase?: string;\n json?: boolean;\n }>();\n const g: GlobalOpts = {\n cluster: o.cluster,\n apiBase: o.apiBase ?? DEFAULT_API_BASE,\n json: o.json ?? false,\n };\n if (o.rpc !== undefined) g.rpc = o.rpc;\n return g;\n}\n\nfunction rootOf(cmd: Command): Command {\n let cur = cmd;\n while (cur.parent) cur = cur.parent;\n return cur;\n}\n\nfunction connectionFor(g: GlobalOpts): Connection {\n return new Connection(g.rpc ?? RPC_DEFAULTS[g.cluster], \"confirmed\");\n}\n\nfunction loadKeypair(path: string): Keypair {\n let raw: string;\n try {\n raw = readFileSync(path, \"utf8\");\n } catch (e) {\n throw new Error(`could not read keypair file '${path}': ${errMsg(e)}`);\n }\n let bytes: number[];\n try {\n bytes = JSON.parse(raw);\n } catch (e) {\n throw new Error(\n `keypair file '${path}' is not valid JSON (expected a 64-byte array, the same format \\`solana-keygen new\\` writes): ${errMsg(e)}`,\n );\n }\n if (!Array.isArray(bytes) || bytes.length !== 64) {\n throw new Error(\n `keypair file '${path}' must contain a JSON array of exactly 64 bytes (got ${Array.isArray(bytes) ? `${bytes.length}` : typeof bytes})`,\n );\n }\n return Keypair.fromSecretKey(Uint8Array.from(bytes));\n}\n\nfunction parsePubkey(s: string, label: string): PublicKey {\n try {\n return new PublicKey(s);\n } catch {\n throw new Error(`${label} is not a valid base58 pubkey: ${s}`);\n }\n}\n\nfunction parseAmountToMicro(s: string): number {\n const n = Number(s);\n if (!Number.isFinite(n) || n <= 0) {\n throw new Error(`--amount must be a positive number (USDC), got '${s}'`);\n }\n const micro = Math.round(n * 1_000_000);\n if (micro <= 0) throw new Error(`--amount too small: ${s}`);\n return micro;\n}\n\nfunction parseCategory(s: string): ServiceCategory {\n const lower = s.toLowerCase();\n switch (lower) {\n case \"datafeed\":\n case \"data-feed\":\n return \"DataFeed\";\n case \"compute\":\n return \"Compute\";\n case \"swap\":\n return \"Swap\";\n case \"rpc\":\n return \"Rpc\";\n case \"other\":\n return \"Other\";\n default:\n throw new Error(\n `--category must be one of: DataFeed, Compute, Swap, Rpc, Other (got '${s}')`,\n );\n }\n}\n\nfunction parseReceiptHash(s: string | undefined): Uint8Array {\n if (!s) return randomBytes(32);\n const hex = s.startsWith(\"0x\") ? s.slice(2) : s;\n if (hex.length !== 64 || !/^[0-9a-fA-F]+$/.test(hex)) {\n throw new Error(\n `--receipt-hash must be 32 bytes hex (64 hex chars, with or without 0x prefix)`,\n );\n }\n return Uint8Array.from(Buffer.from(hex, \"hex\"));\n}\n\n// AgentFuel's constructor wants a keypair even for read-only flows; we\n// hand it a throwaway since nothing signs.\nfunction readOnlyFuel(g: GlobalOpts): AgentFuel {\n return new AgentFuel({\n agent: Keypair.generate(),\n cluster: g.cluster,\n rpc: connectionFor(g),\n apiBase: g.apiBase,\n });\n}\n\nfunction emit(g: GlobalOpts, human: () => string, data: unknown): void {\n if (g.json) {\n process.stdout.write(JSON.stringify(data, jsonReplacer, 2) + \"\\n\");\n } else {\n process.stdout.write(human() + \"\\n\");\n }\n}\n\nfunction jsonReplacer(_key: string, value: unknown): unknown {\n if (value instanceof PublicKey) return value.toBase58();\n if (value instanceof Uint8Array) return Buffer.from(value).toString(\"hex\");\n return value;\n}\n\nfunction errMsg(e: unknown): string {\n return e instanceof Error ? e.message : String(e);\n}\n\n// AccountNotFoundError carries a raw PDA — useless to a CLI user who has no\n// idea which derivation produced it. Wrap each command so we can rephrase\n// \"account not found: <PDA>\" into something that names the resource and the\n// inputs that produced the lookup.\nasync function rephraseNotFound<T>(\n fn: () => Promise<T>,\n reword: (pda: string) => string,\n): Promise<T> {\n try {\n return await fn();\n } catch (e) {\n if (e instanceof AccountNotFoundError) {\n throw new Error(reword(e.account));\n }\n throw e;\n }\n}\n\nfunction explorerUrl(cluster: Cluster, sig: string): string {\n const suffix = cluster === \"mainnet-beta\" ? \"\" : `?cluster=${cluster}`;\n return `https://explorer.solana.com/tx/${sig}${suffix}`;\n}\n\nconst program = new Command();\n\nprogram\n .name(\"agent-fuel\")\n .description(\n \"Agent Fuel CLI — inspect vaults, register services, fire payments from the terminal.\",\n )\n .version(VERSION)\n .addOption(\n new Option(\"--cluster <name>\", \"Solana cluster\")\n .choices([\"mainnet-beta\", \"devnet\", \"testnet\", \"localnet\"] as const)\n .default(\"devnet\" as Cluster),\n )\n .option(\"--rpc <url>\", \"override the default RPC URL for the chosen cluster\")\n .option(\n \"--api-base <url>\",\n \"Agent Fuel backend base URL (used by read commands)\",\n DEFAULT_API_BASE,\n )\n .option(\"--json\", \"emit machine-readable JSON instead of human text\");\n\n// ---------------------------------------------------------------------------\n// Read commands\n// ---------------------------------------------------------------------------\n\nprogram\n .command(\"score <agent>\")\n .description(\"Show the latest reputation snapshot for an agent (REST, no key).\")\n .action(async (agent: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const agentPk = parsePubkey(agent, \"<agent>\");\n const fuel = readOnlyFuel(g);\n const score = await rephraseNotFound(\n () => fuel.getScore(agentPk),\n () =>\n `no reputation data yet for agent ${agent} — the backend has no AgentProfile mirror for this agent (it hasn't received any recorded payments)`,\n );\n emit(g, () => formatScore(score), score);\n });\n\nprogram\n .command(\"vault <owner> <agent>\")\n .description(\"Show on-chain credit vault state for the (owner, agent) pair.\")\n .action(async (owner: string, agent: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const ownerPk = parsePubkey(owner, \"<owner>\");\n const agentPk = parsePubkey(agent, \"<agent>\");\n const fuel = readOnlyFuel(g);\n const vault = await rephraseNotFound(\n () => fuel.getVaultBalance({ owner: ownerPk, agent: agentPk }),\n (pda) =>\n `no vault found at ${pda} for owner=${owner} agent=${agent} — has init_vault been called for this pair?`,\n );\n emit(g, () => formatVault(vault), vault);\n });\n\nprogram\n .command(\"policy <owner> <agent>\")\n .description(\"Show the spend policy guarding an (owner, agent) vault.\")\n .action(async (owner: string, agent: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const ownerPk = parsePubkey(owner, \"<owner>\");\n const agentPk = parsePubkey(agent, \"<agent>\");\n const fuel = readOnlyFuel(g);\n const policy = await rephraseNotFound(\n () => fuel.getPolicy({ owner: ownerPk, agent: agentPk }),\n (pda) =>\n `no spend policy found at ${pda} for owner=${owner} agent=${agent} — policy is created alongside the vault, so this usually means init_vault hasn't been called`,\n );\n emit(g, () => formatPolicy(policy), policy);\n });\n\nprogram\n .command(\"service <authority>\")\n .description(\"Look up a registered service by its authority pubkey.\")\n .action(async (authority: string, _opts, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const authPk = parsePubkey(authority, \"<authority>\");\n const fuel = readOnlyFuel(g);\n const svc = await rephraseNotFound(\n () => fuel.checkService(authPk),\n (pda) =>\n `no service registered for authority ${authority} (registry PDA ${pda} doesn't exist) — run \\`agent-fuel register-service\\` to create one`,\n );\n emit(g, () => formatService(svc), svc);\n });\n\n// ---------------------------------------------------------------------------\n// Action commands\n// ---------------------------------------------------------------------------\n\nprogram\n .command(\"pay\")\n .description(\n \"Atomically spend from a vault and record the payment for reputation.\",\n )\n .requiredOption(\"--keypair <path>\", \"agent keypair (signs the spend half)\")\n .requiredOption(\"--service-keypair <path>\", \"service keypair (co-signs)\")\n .requiredOption(\"--owner <pubkey>\", \"vault owner pubkey\")\n .requiredOption(\"--amount <usdc>\", \"amount in USDC (e.g. 0.5)\")\n .option(\n \"--receipt-hash <hex>\",\n \"32-byte receipt hash as hex (auto-generated if omitted)\",\n )\n .action(\n async (\n opts: {\n keypair: string;\n serviceKeypair: string;\n owner: string;\n amount: string;\n receiptHash?: string;\n },\n cmd: Command,\n ) => {\n const g = readGlobalOpts(cmd);\n const agent = loadKeypair(opts.keypair);\n const service = loadKeypair(opts.serviceKeypair);\n const owner = parsePubkey(opts.owner, \"--owner\");\n const amountUsdc = parseAmountToMicro(opts.amount);\n const receiptHash = parseReceiptHash(opts.receiptHash);\n const result = await rephraseNotFound(\n () =>\n pay({\n agent,\n service,\n owner,\n amountUsdc,\n receiptHash,\n connection: connectionFor(g),\n }),\n (pda) =>\n `pay failed: account not found at ${pda} — either the vault for owner=${opts.owner} agent=${agent.publicKey.toBase58()} doesn't exist, or the spend policy hasn't been created. Try \\`agent-fuel vault ${opts.owner} ${agent.publicKey.toBase58()}\\` to verify.`,\n );\n emit(\n g,\n () =>\n [\n `paid ${opts.amount} USDC`,\n ` agent ${agent.publicKey.toBase58()}`,\n ` service ${service.publicKey.toBase58()}`,\n ` signature ${result.signature}`,\n ` ${explorerUrl(g.cluster, result.signature)}`,\n ].join(\"\\n\"),\n { ...result, receipt_hash: Buffer.from(receiptHash).toString(\"hex\") },\n );\n },\n );\n\nprogram\n .command(\"request-spend\")\n .description(\n \"Submit an over-limit spend that the owner must approve from the app.\",\n )\n .requiredOption(\"--keypair <path>\", \"agent keypair (submits the request)\")\n .requiredOption(\"--owner <pubkey>\", \"vault owner pubkey\")\n .requiredOption(\"--service <pubkey>\", \"service authority pubkey\")\n .requiredOption(\"--amount <usdc>\", \"amount in USDC (e.g. 5.0)\")\n .action(\n async (\n opts: { keypair: string; owner: string; service: string; amount: string },\n cmd: Command,\n ) => {\n const g = readGlobalOpts(cmd);\n const agent = loadKeypair(opts.keypair);\n const owner = parsePubkey(opts.owner, \"--owner\");\n const service = parsePubkey(opts.service, \"--service\");\n const amountUsdc = parseAmountToMicro(opts.amount);\n const result = await requestSpend({\n agent,\n owner,\n service,\n amountUsdc,\n connection: connectionFor(g),\n });\n emit(\n g,\n () =>\n [\n `requested ${opts.amount} USDC (over-limit, awaiting owner approval)`,\n ` pending ${result.pendingSpend.toBase58()}`,\n ` nonce ${result.nonce}`,\n ` signature ${result.signature}`,\n ` ${explorerUrl(g.cluster, result.signature)}`,\n ].join(\"\\n\"),\n result,\n );\n },\n );\n\nprogram\n .command(\"register-service\")\n .description(\"Register a new service on chain (two-signer).\")\n .requiredOption(\"--sponsor <path>\", \"sponsor keypair (pays rent, submits tx)\")\n .requiredOption(\n \"--service-keypair <path>\",\n \"service keypair (long-lived signing identity)\",\n )\n .requiredOption(\"--name <name>\", \"service name (max 32 bytes UTF-8)\")\n .requiredOption(\n \"--category <c>\",\n \"DataFeed | Compute | Swap | Rpc | Other\",\n )\n .option(\"--uri <url>\", \"optional off-chain metadata URI (max 128 bytes)\")\n .action(\n async (\n opts: {\n sponsor: string;\n serviceKeypair: string;\n name: string;\n category: string;\n uri?: string;\n },\n cmd: Command,\n ) => {\n const g = readGlobalOpts(cmd);\n const sponsor = loadKeypair(opts.sponsor);\n const service = loadKeypair(opts.serviceKeypair);\n const category = parseCategory(opts.category);\n const registerArgs: import(\"./register-service.js\").RegisterServiceArgs = {\n sponsor,\n service,\n name: opts.name,\n category,\n connection: connectionFor(g),\n };\n if (opts.uri !== undefined) registerArgs.serviceUri = opts.uri;\n const result = await registerService(registerArgs);\n emit(\n g,\n () =>\n [\n `registered service \"${opts.name}\" (${category})`,\n ` authority ${service.publicKey.toBase58()}`,\n ` sponsor ${sponsor.publicKey.toBase58()}`,\n ` signature ${result.signature}`,\n ` ${explorerUrl(g.cluster, result.signature)}`,\n ].join(\"\\n\"),\n result,\n );\n },\n );\n\n// ---------------------------------------------------------------------------\n// Dev helpers\n// ---------------------------------------------------------------------------\n\nprogram\n .command(\"keygen\")\n .description(\n \"Generate a new Solana keypair (compatible with solana-keygen JSON format).\",\n )\n .option(\n \"--out <path>\",\n \"write the secret-key JSON to a file (parent dirs created)\",\n )\n .action((opts: { out?: string }, cmd: Command) => {\n const g = readGlobalOpts(cmd);\n const kp = Keypair.generate();\n const bytes = Array.from(kp.secretKey);\n const pub = kp.publicKey.toBase58();\n if (opts.out) {\n mkdirSync(dirname(opts.out), { recursive: true });\n writeFileSync(opts.out, JSON.stringify(bytes), { mode: 0o600 });\n emit(\n g,\n () => `wrote keypair to ${opts.out}\\n pubkey ${pub}`,\n { pubkey: pub, path: opts.out },\n );\n } else {\n // No --out: pubkey to stdout in human mode, secret to stderr so the\n // user can choose to redirect it. JSON mode dumps both together.\n if (g.json) {\n emit(g, () => \"\", { pubkey: pub, secret_key: bytes });\n } else {\n process.stderr.write(JSON.stringify(bytes) + \"\\n\");\n process.stdout.write(`pubkey ${pub}\\n`);\n }\n }\n });\n\n// ---------------------------------------------------------------------------\n// Formatters\n// ---------------------------------------------------------------------------\n\nfunction formatScore(s: import(\"./types.js\").ReputationLookup): string {\n return [\n `agent ${s.agent}`,\n `score ${s.score ?? \"(unscored)\"}`,\n `transactions ${s.total_transactions}`,\n `services used ${s.services_used}`,\n `volume USDC ${micro(s.total_volume_usdc)}`,\n `consecutive ok ${s.consecutive_success}`,\n `feedback total ${s.total_feedback_count}`,\n `feedback negative ${s.active_negative_feedback_count}`,\n `last active slot ${s.last_active_slot}`,\n `updated ${s.updated_at}`,\n ].join(\"\\n\");\n}\n\nfunction formatVault(v: import(\"./types.js\").CreditVaultAccount): string {\n return [\n `vault ${v.pubkey.toBase58()}`,\n `owner ${v.owner.toBase58()}`,\n `agent ${v.agent.toBase58()}`,\n `usdc mint ${v.usdc_mint.toBase58()}`,\n `vault token acct ${v.vault_token_account.toBase58()}`,\n `balance ${micro(v.balance)} USDC`,\n ` deposited ${micro(v.total_deposited)}`,\n ` withdrawn ${micro(v.total_withdrawn)}`,\n ` spent ${micro(v.total_spent)}`,\n ` claimed ${micro(v.total_claimed)}`,\n `frozen ${v.frozen}`,\n `pending count ${v.pending_count}`,\n `last active slot ${v.last_active_slot}`,\n ].join(\"\\n\");\n}\n\nfunction formatPolicy(p: import(\"./types.js\").SpendPolicyAccount): string {\n const whitelist = p.whitelist.length\n ? p.whitelist.map((pk) => ` - ${pk.toBase58()}`).join(\"\\n\")\n : \" (empty — no whitelist enforcement)\";\n return [\n `policy ${p.pubkey.toBase58()}`,\n `vault ${p.vault.toBase58()}`,\n `per-tx limit ${micro(p.per_tx_limit_usdc)} USDC`,\n `hourly limit ${micro(p.hourly_limit_usdc)} USDC`,\n `lifetime limit ${micro(p.lifetime_limit_usdc)} USDC`,\n `hourly window slot ${p.hourly_window_start_slot}`,\n `hourly spent ${micro(p.hourly_window_spent_usdc)} USDC`,\n `allow post-pay ${p.allow_post_pay}`,\n `whitelist:`,\n whitelist,\n ].join(\"\\n\");\n}\n\nfunction formatService(s: import(\"./types.js\").ServiceRegistryAccount): string {\n return [\n `registry ${s.pubkey.toBase58()}`,\n `authority ${s.authority.toBase58()}`,\n `name ${s.name}`,\n `category ${s.category}`,\n `active ${s.active}`,\n `agents served ${s.total_agents_served}`,\n `volume received ${micro(s.total_volume_received_usdc)} USDC`,\n `first active slot ${s.first_active_slot}`,\n `last active slot ${s.last_active_slot}`,\n ].join(\"\\n\");\n}\n\nfunction micro(n: number): string {\n return (n / 1_000_000).toFixed(6);\n}\n\n// ---------------------------------------------------------------------------\n// Entry point — surface SDK errors as one-line messages instead of stack\n// traces, and exit non-zero so shell pipelines can branch on success.\n// ---------------------------------------------------------------------------\n\nprogram.exitOverride();\n\nprogram.parseAsync(process.argv).catch((err: unknown) => {\n // Commander's --help and --version go through exitOverride() as throws;\n // they're not real errors and shouldn't print to stderr.\n if (typeof err === \"object\" && err !== null && \"code\" in err) {\n const code = (err as { code: unknown }).code;\n if (code === \"commander.help\" || code === \"commander.helpDisplayed\" || code === \"commander.version\") {\n process.exit(0);\n }\n }\n const msg = errMsg(err);\n process.stderr.write(`agent-fuel: ${msg}\\n`);\n process.exit(1);\n});\n"]}
|