{"_id":"@aegis-vaults/sdk","_rev":"6-234d9c68a03dac0abdd7d34ba5859e6d","name":"@aegis-vaults/sdk","dist-tags":{"latest":"1.0.1"},"versions":{"0.2.0":{"name":"@aegis-vaults/sdk","version":"0.2.0","keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"author":{"name":"Aegis Team"},"license":"MIT","_id":"@aegis-vaults/sdk@0.2.0","maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"dist":{"shasum":"def5776ae70344bc18780f95c64ea9e07f4fade0","tarball":"https://registry.npmjs.org/@aegis-vaults/sdk/-/sdk-0.2.0.tgz","fileCount":17,"integrity":"sha512-zD0sjTUQuS25pFTRHIeYKoAdvQ3+DZVOmTPhSx4WpKAhd5LvwfPug5dNQ+QnxpRvHmKjhYxP3JbPWIwc6QUyJA==","signatures":[{"sig":"MEYCIQCVXkcXvj8MN291OUZrWYkN1N3C755CWupAXdebrPTwHQIhAIulZYR0qVqcYZ3ZjESWI5bI9yPaxnjJTd2l+cM9DyuE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1040249},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./agents":{"types":"./dist/agents/index.d.ts","import":"./dist/agents/index.js","require":"./dist/agents/index.cjs"}},"gitHead":"8aff9cff29e8489da446e696f51198e9cb7fe70a","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsup","test:watch":"jest --watch","type-check":"tsc --noEmit","test:devnet":"tsx examples/devnet-test.ts","verify:setup":"tsx examples/verify-setup.ts","test:coverage":"jest --coverage","example:devnet":"tsx examples/devnet-test.ts","prepublishOnly":"npm run build","example:quickstart":"tsx examples/quickstart.ts"},"_npmUser":{"name":"rkaelle","email":"rkaelle2@gmail.com"},"repository":{"url":"git+https://github.com/aegis-vaults/aegis-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","directories":{},"_nodeVersion":"22.12.0","dependencies":{"bs58":"^5.0.0","bn.js":"^5.2.2","borsh":"^0.7.0","cross-fetch":"^4.0.0","@types/bn.js":"^5.2.0","@solana/web3.js":"^1.87.0","@coral-xyz/anchor":"^0.30.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.56.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^29.5.12","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"@solana/web3.js":"^1.87.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.0_1764705777094_0.006294366809822538","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aegis-vaults/sdk","version":"0.2.1","keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"author":{"name":"Aegis Team"},"license":"MIT","_id":"@aegis-vaults/sdk@0.2.1","maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"dist":{"shasum":"21dc5c8222fcf3542e6a056a52027e1be4750d46","tarball":"https://registry.npmjs.org/@aegis-vaults/sdk/-/sdk-0.2.1.tgz","fileCount":17,"integrity":"sha512-YQR0hJdPOTXtEY3yY8QYMCnSLg/l4zM+fs4cYgwT1DQiIYdGXN2+ihdvBfWWjznTisM39QSNJQSKsMJjrldb9Q==","signatures":[{"sig":"MEYCIQDqtgyCY3By72vnTnze3zpBd6TU8sKqhI+L0cpbnBsmxwIhAPO8Q1zE8SVgg7I5GcVxiV7Qe9Xq9fPnXYkcKzsi6plw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1072612},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./agents":{"types":"./dist/agents/index.d.ts","import":"./dist/agents/index.js","require":"./dist/agents/index.cjs"}},"gitHead":"da66e65c11eb7c9e5de4b70ffa522a652c355217","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsup","test:watch":"jest --watch","type-check":"tsc --noEmit","test:devnet":"tsx examples/devnet-test.ts","verify:setup":"tsx examples/verify-setup.ts","test:coverage":"jest --coverage","example:devnet":"tsx examples/devnet-test.ts","prepublishOnly":"npm run build","example:quickstart":"tsx examples/quickstart.ts"},"_npmUser":{"name":"rkaelle","email":"rkaelle2@gmail.com"},"repository":{"url":"git+https://github.com/aegis-vaults/aegis-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","directories":{},"_nodeVersion":"22.12.0","dependencies":{"bs58":"^5.0.0","bn.js":"^5.2.2","borsh":"^0.7.0","cross-fetch":"^4.0.0","@types/bn.js":"^5.2.0","@solana/web3.js":"^1.87.0","@coral-xyz/anchor":"^0.30.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.56.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^29.5.12","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"@solana/web3.js":"^1.87.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.1_1764748998272_0.7575015386386452","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aegis-vaults/sdk","version":"0.3.0","keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"author":{"name":"Aegis Team"},"license":"MIT","_id":"@aegis-vaults/sdk@0.3.0","maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"dist":{"shasum":"e246e2310e916815f072c0cb20af17cb90b939ab","tarball":"https://registry.npmjs.org/@aegis-vaults/sdk/-/sdk-0.3.0.tgz","fileCount":17,"integrity":"sha512-hmnwmmHapEoTYJeZYJmoVxGHeWrjiGNTplZ/DfTpxn8aw0bQxCyfN1jBZ2NxKGnv37r7LhkJaSGrOafV+qnDdw==","signatures":[{"sig":"MEUCIEYbqCtBZ5IX9Ld8yln2sOfRjaMZ1FfrEbeIu5ZeVf/1AiEA4/0ecPmSDaSFseGmTFDIku7wzsFpOjKVZcf8jKir5YA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1128808},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./agents":{"types":"./dist/agents/index.d.ts","import":"./dist/agents/index.js","require":"./dist/agents/index.cjs"}},"gitHead":"b39ed1179af2853d566014819c6ed9418bd05a86","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsup","test:watch":"jest --watch","type-check":"tsc --noEmit","test:devnet":"tsx examples/devnet-test.ts","verify:setup":"tsx examples/verify-setup.ts","test:coverage":"jest --coverage","example:devnet":"tsx examples/devnet-test.ts","prepublishOnly":"npm run build","example:transfer":"tsx examples/transfer-example.ts","example:quickstart":"tsx examples/quickstart.ts"},"_npmUser":{"name":"rkaelle","email":"rkaelle2@gmail.com"},"repository":{"url":"git+https://github.com/aegis-vaults/aegis-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","directories":{},"_nodeVersion":"22.12.0","dependencies":{"bs58":"^5.0.0","bn.js":"^5.2.2","borsh":"^0.7.0","cross-fetch":"^4.0.0","@types/bn.js":"^5.2.0","@solana/web3.js":"^1.87.0","@coral-xyz/anchor":"^0.30.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.56.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^29.5.12","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"@solana/web3.js":"^1.87.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.3.0_1764751145342_0.08145156948662713","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aegis-vaults/sdk","version":"0.4.0","keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"author":{"name":"Aegis Team"},"license":"MIT","_id":"@aegis-vaults/sdk@0.4.0","maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"dist":{"shasum":"e0e23036c4f8df785891e2856e296cf08dd6130f","tarball":"https://registry.npmjs.org/@aegis-vaults/sdk/-/sdk-0.4.0.tgz","fileCount":17,"integrity":"sha512-Tk5FnELKhlx4L34RrpPEeXis3RXsUaGTDAwmb+h3cSnYU1fH86SzlJJp66Xhbg3MNwQmnkdfyBHHiDMXSp0bcw==","signatures":[{"sig":"MEQCIDROQU/HW730XfYFbWw3gxrwrUpkCfD6wS+581qHWj7kAiABISWMQkyaIBeE1uNbIbibHCcviXkjyQbiAMju2qGBWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1176451},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./agents":{"types":"./dist/agents/index.d.ts","import":"./dist/agents/index.js","require":"./dist/agents/index.cjs"}},"gitHead":"32655019790471d6bc8b5ef80d7e78eed3a59933","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsup","test:watch":"jest --watch","type-check":"tsc --noEmit","test:devnet":"tsx examples/devnet-test.ts","verify:setup":"tsx examples/verify-setup.ts","test:coverage":"jest --coverage","example:devnet":"tsx examples/devnet-test.ts","prepublishOnly":"npm run build","example:transfer":"tsx examples/transfer-example.ts","example:quickstart":"tsx examples/quickstart.ts"},"_npmUser":{"name":"rkaelle","email":"rkaelle2@gmail.com"},"repository":{"url":"git+https://github.com/aegis-vaults/aegis-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","directories":{},"_nodeVersion":"22.12.0","dependencies":{"bs58":"^5.0.0","bn.js":"^5.2.2","borsh":"^0.7.0","cross-fetch":"^4.0.0","@types/bn.js":"^5.2.0","@solana/web3.js":"^1.87.0","@coral-xyz/anchor":"^0.30.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.56.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^29.5.12","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"@solana/web3.js":"^1.87.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.4.0_1764808962124_0.6154811229354733","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aegis-vaults/sdk","version":"1.0.0","keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"author":{"name":"Aegis Team"},"license":"MIT","_id":"@aegis-vaults/sdk@1.0.0","maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"dist":{"shasum":"3e106147b478e71ebfd75f657c64675b0c593cd1","tarball":"https://registry.npmjs.org/@aegis-vaults/sdk/-/sdk-1.0.0.tgz","fileCount":17,"integrity":"sha512-hcLibPv+ARL+rLdR7PvYtEkPvABYdRVOalI5nS8DFs2evg41p7mo0HxWXNAzxLfhTkV2Y6w/jkwRxzL0sqwFMg==","signatures":[{"sig":"MEUCIFaPmB+bi3SCe72P/Uag51Q3oyV3ngD4YVpEFHWI5Z0hAiEA1mSq2yl+K7s6Vx/wlnyvae60yAOTTz3S3LO+tCeuCaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1177567},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./agents":{"types":"./dist/agents/index.d.ts","import":"./dist/agents/index.js","require":"./dist/agents/index.cjs"}},"gitHead":"836028e6d2cc4aee676e3ae75072a5fa1833d163","scripts":{"dev":"tsup --watch","lint":"eslint src --ext .ts","test":"jest","build":"tsup","test:watch":"jest --watch","type-check":"tsc --noEmit","test:devnet":"tsx examples/devnet-test.ts","verify:setup":"tsx examples/verify-setup.ts","test:coverage":"jest --coverage","example:devnet":"tsx examples/devnet-test.ts","prepublishOnly":"npm run build","example:transfer":"tsx examples/transfer-example.ts","example:quickstart":"tsx examples/quickstart.ts"},"_npmUser":{"name":"rkaelle","email":"rkaelle2@gmail.com"},"repository":{"url":"git+https://github.com/aegis-vaults/aegis-sdk.git","type":"git"},"_npmVersion":"10.9.0","description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","directories":{},"_nodeVersion":"22.12.0","dependencies":{"bs58":"^5.0.0","bn.js":"^5.2.2","borsh":"^0.7.0","cross-fetch":"^4.0.0","@types/bn.js":"^5.2.0","@solana/web3.js":"^1.87.0","@coral-xyz/anchor":"^0.30.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","jest":"^29.7.0","tsup":"^8.0.1","eslint":"^8.56.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","typescript":"^5.3.0","@types/jest":"^29.5.12","@types/node":"^20.11.0","@typescript-eslint/parser":"^7.0.0","@typescript-eslint/eslint-plugin":"^7.0.0"},"peerDependencies":{"@solana/web3.js":"^1.87.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk_1.0.0_1764960025431_0.48584615883395976","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aegis-vaults/sdk","version":"1.0.1","description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./agents":{"types":"./dist/agents/index.d.ts","import":"./dist/agents/index.js","require":"./dist/agents/index.cjs"}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:devnet":"tsx examples/devnet-test.ts","verify:setup":"tsx examples/verify-setup.ts","example:quickstart":"tsx examples/quickstart.ts","example:devnet":"tsx examples/devnet-test.ts","example:transfer":"tsx examples/transfer-example.ts","type-check":"tsc --noEmit","lint":"eslint src --ext .ts","prepublishOnly":"npm run build"},"keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"author":{"name":"Aegis Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aegis-vaults/aegis-sdk.git"},"bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","dependencies":{"@coral-xyz/anchor":"^0.30.1","@solana/web3.js":"^1.87.0","@types/bn.js":"^5.2.0","bn.js":"^5.2.2","borsh":"^0.7.0","bs58":"^5.0.0","cross-fetch":"^4.0.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.11.0","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^7.0.0","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.1.2","ts-node":"^10.9.2","tsup":"^8.0.1","tsx":"^4.21.0","typescript":"^5.3.0"},"peerDependencies":{"@solana/web3.js":"^1.87.0"},"engines":{"node":">=18.0.0"},"_id":"@aegis-vaults/sdk@1.0.1","gitHead":"72a4b167757bee7f35f343f4db8a9ebee309c74a","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-1QfDnpTAig8m+9QOBIdcWmXtzxwDu416OTfmKLIdPUlmgQrfQbBoqlmbL9gk8vO/PsfmfQetV23pwS93aXG2ww==","shasum":"42238013a2f808c7ce4a28e6d2d1c7981da2cd34","tarball":"https://registry.npmjs.org/@aegis-vaults/sdk/-/sdk-1.0.1.tgz","fileCount":17,"unpackedSize":1177567,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEEqxqIQes3/KRImNWLP4Ihmj/rp5GwfZPSBezkqoKFUAiBzSZoBmewS2Z2RZzY3/SUSdyRHPdcN8kovU92SivrSaw=="}]},"_npmUser":{"name":"rkaelle","email":"rkaelle2@gmail.com"},"directories":{},"maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.0.1_1764977350218_0.5529172608214987"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-02T20:02:57.009Z","modified":"2025-12-05T23:29:10.627Z","0.2.0":"2025-12-02T20:02:57.350Z","0.2.1":"2025-12-03T08:03:18.550Z","0.3.0":"2025-12-03T08:39:05.560Z","0.4.0":"2025-12-04T00:42:42.292Z","1.0.0":"2025-12-05T18:40:25.594Z","1.0.1":"2025-12-05T23:29:10.429Z"},"bugs":{"url":"https://github.com/aegis-vaults/aegis-sdk/issues"},"author":{"name":"Aegis Team"},"license":"MIT","homepage":"https://github.com/aegis-vaults/aegis-sdk#readme","keywords":["solana","aegis","ai","finance","vault","policy","sdk","typescript","blockchain","web3"],"repository":{"type":"git","url":"git+https://github.com/aegis-vaults/aegis-sdk.git"},"description":"TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana","maintainers":[{"name":"rkaelle","email":"rkaelle2@gmail.com"}],"readme":"# @aegis-vaults/sdk\n\n> TypeScript SDK for Aegis Protocol - On-chain operating system for AI finance on Solana\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue)](https://www.typescriptlang.org/)\n[![Solana](https://img.shields.io/badge/Solana-Web3.js-9945FF)](https://solana.com/)\n\n## Overview\n\nAegis SDK enables AI agents to autonomously execute on-chain transactions with human-in-the-loop safety controls. Give your AI agent controlled access to Solana funds through smart vaults with:\n\n- **Policy Guards**: Daily spending limits and address whitelists enforced on-chain\n- **Override System**: Blocked transactions trigger notifications to vault owners who can approve via Solana Blinks\n- **Multi-Channel Notifications**: Email, Telegram, Discord, and webhook alerts for blocked transactions\n- **AI Framework Integration**: Drop-in tools for OpenAI, LangChain, and Anthropic Claude\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Core Concepts](#core-concepts)\n- [Quick Start](#quick-start)\n- [For Vault Owners](#for-vault-owners)\n- [For AI Agents](#for-ai-agents)\n- [Override Flow](#override-flow)\n- [AI Framework Integration](#ai-framework-integration)\n- [API Reference](#api-reference)\n- [Error Handling](#error-handling)\n- [Utilities](#utilities)\n- [Testing](#testing)\n- [Architecture](#architecture)\n\n## Installation\n\n```bash\nnpm install @aegis-vaults/sdk @solana/web3.js @coral-xyz/anchor bn.js\n```\n\n## Core Concepts\n\n### Two Types of Users\n\n| Role | Description | Signs Transactions With |\n|------|-------------|------------------------|\n| **Vault Owner** | Human who creates and funds vaults, sets policies | Browser wallet (Phantom, etc.) |\n| **AI Agent** | AI system that executes transactions autonomously | Server-side keypair |\n\n### Key Addresses\n\nEach vault has TWO important addresses:\n\n| Address | Purpose | Use Case |\n|---------|---------|----------|\n| **Vault Address** | Configuration PDA | Pass to SDK methods |\n| **Deposit Address** | Holds actual SOL | Send funds HERE to fund vault |\n\n⚠️ **IMPORTANT**: Always send SOL to the **Deposit Address**, not the Vault Address!\n\n### Transaction Flow\n\n```\n┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐\n│   AI Agent      │───▶│  Aegis Protocol  │───▶│   Destination   │\n│   (Signer)      │    │  (Policy Check)  │    │    Wallet       │\n└─────────────────┘    └──────────────────┘    └─────────────────┘\n                              │\n                    ┌─────────┴─────────┐\n                    ▼                   ▼\n              ✅ PASSES            ❌ BLOCKED\n           (Tx Executes)         (Notify Owner)\n                                      │\n                                      ▼\n                              ┌───────────────┐\n                              │  Blink URL    │\n                              │  (Approve/    │\n                              │   Deny)       │\n                              └───────────────┘\n```\n\n## Quick Start\n\n### 1. Create a Vault (Vault Owner)\n\n```typescript\nimport { AegisClient } from '@aegis-vaults/sdk';\nimport { Keypair } from '@solana/web3.js';\n\n// Initialize client\nconst client = new AegisClient({\n  cluster: 'devnet',\n  guardianApiUrl: 'https://aegis-guardian-production.up.railway.app',\n});\n\n// Connect your wallet (must wrap Keypair in Wallet from Anchor)\nimport { Wallet } from '@coral-xyz/anchor';\n\nconst ownerKeypair = Keypair.fromSecretKey(/* your secret key */);\nconst wallet = new Wallet(ownerKeypair);\nclient.setWallet(wallet);\n\n// Create vault\nconst result = await client.createVault({\n  name: 'My AI Agent Treasury',\n  agentSigner: 'AGENT_PUBLIC_KEY_HERE', // Your AI agent's public key\n  dailyLimit: 100_000_000, // 0.1 SOL per day\n});\n\nconsole.log('Vault Address:', result.vaultAddress);\nconsole.log('Deposit Address:', result.depositAddress);\nconsole.log('Vault Nonce:', result.nonce); // Save this! Needed for transactions\n```\n\n### 2. Fund the Vault\n\n```bash\n# Using Solana CLI\nsolana transfer <DEPOSIT_ADDRESS> 1 --url devnet\n```\n\nOr programmatically:\n```typescript\nconst depositAddress = client.getVaultDepositAddress(vaultAddress);\n// Send SOL to depositAddress via your preferred method\n```\n\n### 3. Execute Agent Transaction (AI Agent)\n\n```typescript\nimport { AegisClient } from '@aegis-vaults/sdk';\nimport { Keypair } from '@solana/web3.js';\n\n// Initialize client with agent keypair\nconst client = new AegisClient({\n  cluster: 'devnet',\n  guardianApiUrl: 'https://aegis-guardian-production.up.railway.app',\n});\n\n// Load your AI agent's keypair (keep this secure!)\nimport { Wallet } from '@coral-xyz/anchor';\n\nconst agentKeypair = Keypair.fromSecretKey(\n  Uint8Array.from(JSON.parse(process.env.AGENT_SECRET_KEY!))\n);\nconst wallet = new Wallet(agentKeypair);\nclient.setWallet(wallet);\n\n// Execute transaction (auto-notifies Guardian if blocked)\ntry {\n  const signature = await client.executeAgent({\n    vault: 'VAULT_ADDRESS',\n    destination: 'RECIPIENT_ADDRESS', // Must be whitelisted!\n    amount: 10_000_000, // 0.01 SOL\n    vaultNonce: 'VAULT_NONCE', // From vault creation\n  });\n  \n  console.log('✅ Transaction successful:', signature);\n} catch (error: any) {\n  if (error.overrideRequested) {\n    console.log('⏳ Transaction blocked. Override requested.');\n    console.log('📱 Blink URL:', error.blinkUrl);\n    // Vault owner will receive notification to approve\n  }\n}\n```\n\n## For Vault Owners\n\n### Creating a Vault\n\n```typescript\nconst result = await client.createVault({\n  name: 'Production AI Treasury',\n  agentSigner: agentPublicKey.toBase58(),\n  dailyLimit: 1_000_000_000, // 1 SOL per day\n});\n\n// SAVE THESE VALUES:\n// - result.vaultAddress: Pass to your AI agent\n// - result.depositAddress: Fund this address\n// - result.nonce: Agent needs this for transactions\n```\n\n### Managing Whitelist\n\nOnly whitelisted addresses can receive funds:\n\n```typescript\n// Add address to whitelist\nawait client.addToWhitelist(vaultAddress, vaultNonce, recipientAddress);\n\n// Remove from whitelist\nawait client.removeFromWhitelist(vaultAddress, vaultNonce, oldAddress);\n\n// View current whitelist\nconst vault = await client.getVault(vaultAddress);\nconsole.log('Whitelisted addresses:', vault.whitelist.map(pk => pk.toBase58()));\n```\n\n### Updating Daily Limit\n\n```typescript\nawait client.updatePolicy({\n  vault: vaultAddress,\n  dailyLimit: 2_000_000_000, // 2 SOL\n});\n```\n\n### Emergency Controls\n\n```typescript\n// Pause vault (blocks ALL transactions)\nawait client.pauseVault(vaultAddress, vaultNonce);\n\n// Resume vault\nawait client.resumeVault(vaultAddress, vaultNonce);\n\n// Rotate agent signer key (security)\nawait client.updateAgentSigner(vaultAddress, vaultNonce, newAgentPublicKey);\n```\n\n### Checking Vault Status\n\n```typescript\nconst vault = await client.getVault(vaultAddress);\n\nconsole.log('Name:', vault.name);\nconsole.log('Daily Limit:', vault.dailyLimit.toString(), 'lamports');\nconsole.log('Spent Today:', vault.spentToday.toString(), 'lamports');\nconsole.log('Paused:', vault.paused);\nconsole.log('Whitelist Count:', vault.whitelistCount);\n\n// Get balance\nconst balance = await client.getVaultBalance(vaultAddress);\nconsole.log('Balance:', balance / 1e9, 'SOL');\n```\n\n## For AI Agents\n\n### Setup\n\nYour AI agent needs:\n1. **Agent Keypair**: A Solana keypair for signing transactions\n2. **Vault Address**: The vault PDA address\n3. **Vault Nonce**: Used for PDA derivation (from vault creation)\n\n```typescript\nconst client = new AegisClient({\n  cluster: 'devnet',\n  guardianApiUrl: 'https://aegis-guardian-production.up.railway.app',\n  autoRequestOverride: true, // Automatically notify Guardian on blocked tx\n});\n\n// Load agent keypair from environment\nimport { Wallet } from '@coral-xyz/anchor';\n\nconst agentKeypair = Keypair.fromSecretKey(\n  Uint8Array.from(JSON.parse(process.env.AGENT_SECRET_KEY!))\n);\nconst wallet = new Wallet(agentKeypair);\nclient.setWallet(wallet);\n```\n\n### Executing Transactions\n\n```typescript\nimport { DailyLimitExceededError, NotWhitelistedError } from '@aegis-vaults/sdk';\n\ntry {\n  const signature = await client.executeAgent({\n    vault: process.env.VAULT_ADDRESS!,\n    destination: recipientAddress,\n    amount: 50_000_000, // 0.05 SOL\n    vaultNonce: process.env.VAULT_NONCE!,\n    purpose: 'Payment for service', // Optional metadata\n  });\n  \n  console.log('Transaction executed:', signature);\n  console.log('Explorer:', `https://explorer.solana.com/tx/${signature}?cluster=devnet`);\n} catch (error: any) {\n  // Error includes Blink URL for vault owner to approve\n  if (error.overrideRequested) {\n    console.log('Transaction blocked. Vault owner notified.');\n    console.log('Blink URL:', error.blinkUrl);\n  } else {\n    console.error('Transaction failed:', error.message);\n  }\n}\n```\n\n### Pre-flight Checks\n\nCheck vault state before attempting transactions:\n\n```typescript\nasync function canExecute(vault: string, amount: number): Promise<boolean> {\n  const vaultData = await client.getVault(vault);\n  const balance = await client.getVaultBalance(vault);\n  \n  // Check if vault is paused\n  if (vaultData.paused) {\n    console.log('Vault is paused');\n    return false;\n  }\n  \n  // Check balance\n  if (balance < amount) {\n    console.log('Insufficient balance');\n    return false;\n  }\n  \n  // Check daily limit\n  const remaining = BigInt(vaultData.dailyLimit.toString()) - BigInt(vaultData.spentToday.toString());\n  if (remaining < BigInt(amount)) {\n    console.log('Would exceed daily limit');\n    return false;\n  }\n  \n  return true;\n}\n```\n\n## Override Flow\n\nWhen a transaction is blocked by policy (daily limit exceeded, not whitelisted, etc.):\n\n### 1. SDK Notifies Guardian\n\nThe SDK automatically notifies the Guardian API when a transaction is blocked:\n\n```typescript\n// This happens automatically when autoRequestOverride: true (default)\nconst response = await client.executeAgent({...});\n// If blocked, error.overrideRequested will be true\n// error.blinkUrl contains the approval link\n```\n\n### 2. Owner Receives Notification\n\nThe vault owner receives notifications via:\n- 📧 Email (SendGrid)\n- 📱 Telegram\n- 💬 Discord\n- 🔗 Webhook\n\n### 3. Owner Approves via Blink\n\nThe owner clicks the Blink URL and approves in their wallet. The Blink:\n1. Creates the override request on-chain\n2. Approves the override\n3. Executes the transfer\n\nAll in one transaction!\n\n### Manual Override Request\n\nIf needed, you can manually request an override:\n\n```typescript\nconst override = await client.requestOverride({\n  vault: vaultAddress,\n  destination: recipientAddress,\n  amount: 2_000_000_000, // 2 SOL (exceeds daily limit)\n  reason: 'Emergency payment required',\n});\n\nconsole.log('Override Blink URL:', override.blinkUrl);\n```\n\n## AI Framework Integration\n\n### OpenAI Function Calling\n\n```typescript\nimport OpenAI from 'openai';\nimport { AegisClient } from '@aegis-vaults/sdk';\nimport { createOpenAITools, executeAegisTool } from '@aegis-vaults/sdk/agents';\n\nconst openai = new OpenAI();\nconst aegis = new AegisClient({...});\naegis.setWallet(agentKeypair);\n\n// Get Aegis tool definitions\nconst tools = createOpenAITools(aegis);\n\n// Chat completion with tools\nconst response = await openai.chat.completions.create({\n  model: 'gpt-4',\n  messages: [\n    { role: 'system', content: 'You are a financial agent with access to an Aegis vault. Use it to send SOL payments when requested.' },\n    { role: 'user', content: 'Send 0.1 SOL to 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU' },\n  ],\n  tools,\n  tool_choice: 'auto',\n});\n\n// Handle tool calls\nif (response.choices[0].message.tool_calls) {\n  for (const toolCall of response.choices[0].message.tool_calls) {\n    const result = await executeAegisTool(aegis, toolCall);\n    console.log('Tool result:', result);\n  }\n}\n```\n\n### Available OpenAI Tools\n\n| Tool | Description |\n|------|-------------|\n| `aegis_create_vault` | Create a new vault |\n| `aegis_execute_transaction` | Execute agent transaction |\n| `aegis_request_override` | Request manual approval |\n| `aegis_get_vault` | Get vault configuration |\n| `aegis_get_vault_balance` | Get vault balance |\n| `aegis_get_transaction_history` | Get transaction history |\n| `aegis_add_to_whitelist` | Add address to whitelist |\n| `aegis_update_daily_limit` | Update daily limit |\n\n### LangChain Integration\n\n```typescript\nimport { DynamicStructuredTool } from '@langchain/core/tools';\nimport { z } from 'zod';\nimport { AegisClient } from '@aegis-vaults/sdk';\n\nconst aegis = new AegisClient({...});\naegis.setWallet(agentKeypair);\n\nconst aegisTransferTool = new DynamicStructuredTool({\n  name: 'aegis_transfer',\n  description: 'Transfer SOL from the Aegis vault to a destination address',\n  schema: z.object({\n    destination: z.string().describe('Recipient Solana address'),\n    amount_sol: z.number().describe('Amount in SOL'),\n    purpose: z.string().optional(),\n  }),\n  func: async ({ destination, amount_sol, purpose }) => {\n    try {\n      const signature = await aegis.executeAgent({\n        vault: process.env.VAULT_ADDRESS!,\n        destination,\n        amount: Math.floor(amount_sol * 1e9),\n        vaultNonce: process.env.VAULT_NONCE!,\n        purpose,\n      });\n      return JSON.stringify({ success: true, signature });\n    } catch (error: any) {\n      if (error.overrideRequested) {\n        return JSON.stringify({\n          success: false,\n          blocked: true,\n          message: 'Transaction blocked. Vault owner has been notified.',\n          blinkUrl: error.blinkUrl,\n        });\n      }\n      return JSON.stringify({ success: false, error: error.message });\n    }\n  },\n});\n```\n\n## API Reference\n\n### AegisClient\n\n#### Constructor\n\n```typescript\nconst client = new AegisClient({\n  // Network configuration\n  cluster?: 'devnet' | 'mainnet-beta' | 'testnet',\n  connection?: Connection, // Or provide custom connection\n  programId?: string, // Default: devnet program ID\n  \n  // Guardian API\n  guardianApiUrl?: string,\n  \n  // Transaction settings\n  commitment?: Commitment,\n  confirmTimeout?: number,\n  autoRetry?: boolean,\n  maxRetries?: number,\n  \n  // Override behavior\n  autoRequestOverride?: boolean, // Auto-notify Guardian on blocked tx\n});\n```\n\n#### Vault Management\n\n| Method | Description | Signer |\n|--------|-------------|--------|\n| `createVault(options)` | Create new vault | Owner |\n| `getVault(address)` | Get vault config | - |\n| `listVaults(owner)` | List owner's vaults | - |\n| `getVaultBalance(address)` | Get SOL balance | - |\n| `getVaultDepositAddress(address)` | Get deposit address | - |\n\n#### Policy Management\n\n| Method | Description | Signer |\n|--------|-------------|--------|\n| `updatePolicy(options)` | Update daily limit | Owner |\n| `addToWhitelist(vault, nonce, address)` | Add to whitelist | Owner |\n| `removeFromWhitelist(vault, nonce, address)` | Remove from whitelist | Owner |\n| `pauseVault(vault, nonce)` | Pause all transactions | Owner |\n| `resumeVault(vault, nonce)` | Resume transactions | Owner |\n| `updateAgentSigner(vault, nonce, newSigner)` | Rotate agent key | Owner |\n\n#### Transaction Execution\n\n| Method | Description | Signer |\n|--------|-------------|--------|\n| `executeGuarded(options)` | Execute owner-signed tx | Owner |\n| `executeAgent(options)` | Execute agent-signed tx | Agent |\n| `requestOverride(options)` | Request manual approval | Owner |\n| `approveOverride(vault, vaultNonce, overrideNonce)` | Approve override | Owner |\n| `executeOverride(vault, vaultNonce)` | Execute approved override | Owner |\n\n#### Guardian API\n\n| Method | Description |\n|--------|-------------|\n| `getGuardianVault(address)` | Get vault from Guardian (includes metadata) |\n| `getTransactionHistory(options)` | Get transaction history |\n| `getAnalytics(vault, options)` | Get spending analytics |\n\n## Error Handling\n\n```typescript\nimport {\n  AegisError,\n  DailyLimitExceededError,\n  NotWhitelistedError,\n  VaultPausedError,\n  InsufficientBalanceError,\n  UnauthorizedSignerError,\n  MissingWalletError,\n  NetworkError,\n  TransactionTimeoutError,\n} from '@aegis-vaults/sdk';\n\ntry {\n  await client.executeAgent({...});\n} catch (error) {\n  if (error instanceof DailyLimitExceededError) {\n    // Transaction exceeded daily limit\n    // error.overrideRequested = true if Guardian was notified\n    // error.blinkUrl = URL for owner to approve\n  } else if (error instanceof NotWhitelistedError) {\n    // Destination not in whitelist\n    // Ask vault owner to whitelist the address\n  } else if (error instanceof VaultPausedError) {\n    // Vault is paused\n    // Owner needs to resume the vault\n  } else if (error instanceof InsufficientBalanceError) {\n    // Not enough SOL in vault\n    // Need to fund the deposit address\n  } else if (error instanceof UnauthorizedSignerError) {\n    // Wrong keypair used\n    // Must use the authorized agent_signer\n  }\n}\n```\n\n## Utilities\n\n### Amount Conversions\n\n```typescript\nimport { solToLamports, lamportsToSol, formatLamports } from '@aegis-vaults/sdk';\n\nconst lamports = solToLamports(1.5);       // BN(1500000000)\nconst sol = lamportsToSol(lamports);        // 1.5\nconst formatted = formatLamports(lamports); // \"1.5000 SOL\"\n```\n\n### PDA Derivation\n\n```typescript\nimport {\n  deriveVaultPda,\n  deriveVaultAuthorityPda,\n  deriveOverridePda,\n  deriveFeeTreasuryPda,\n  generateVaultNonce,\n} from '@aegis-vaults/sdk';\n\n// Generate unique nonce for new vault\nconst nonce = generateVaultNonce();\n\n// Derive vault PDA\nconst [vaultPda, bump] = deriveVaultPda(ownerPubkey, programId, nonce);\n\n// Derive deposit address (vault authority)\nconst [depositAddress] = deriveVaultAuthorityPda(vaultPda, programId);\n```\n\n## Testing\n\n### Environment Setup\n\n```bash\n# Set environment variables\nexport VAULT_ADDRESS=\"your-vault-address\"\nexport VAULT_NONCE=\"your-vault-nonce\"\nexport AGENT_SECRET='[1,2,3,...]'  # JSON array of secret key bytes\nexport DESTINATION=\"recipient-address\"\n```\n\n### Run Test Scenarios\n\n```bash\n# Valid transaction (within limits)\nAMOUNT=0.01 TEST_TYPE=valid npx tsx examples/test-scenario.ts\n\n# Exceed daily limit (triggers override flow)\nAMOUNT=1.0 TEST_TYPE=exceed_limit npx tsx examples/test-scenario.ts\n```\n\n### Unit Tests\n\n```bash\nnpm test\n```\n\n## Architecture\n\n```\n@aegis-vaults/sdk\n├── src/\n│   ├── client/           # AegisClient main class\n│   ├── agents/           # AI framework integrations\n│   │   ├── openai.ts     # OpenAI function calling\n│   │   ├── langchain.ts  # LangChain tools\n│   │   └── anthropic.ts  # Anthropic Claude\n│   ├── guardian/         # Guardian API client\n│   ├── types/            # TypeScript types\n│   ├── errors/           # Typed error classes\n│   └── utils/            # Utilities (PDA, amounts, retry)\n├── examples/             # Usage examples\n└── tests/                # Test suite\n```\n\n## Environment Variables\n\n| Variable | Description | Required |\n|----------|-------------|----------|\n| `VAULT_ADDRESS` | Your vault PDA address | Yes |\n| `VAULT_NONCE` | Nonce from vault creation | Yes |\n| `AGENT_SECRET_KEY` | Agent keypair (JSON array) | Yes |\n| `GUARDIAN_URL` | Guardian API URL | No (defaults to production) |\n\n## Important Notes\n\n1. **Deposit Address**: Always send SOL to the **deposit address** (vault authority PDA), not the vault address itself.\n\n2. **Agent Keypair Security**: Keep your agent's secret key secure. Use environment variables or secret management services.\n\n3. **Vault Nonce**: Save the nonce from vault creation. It's required for all agent transactions.\n\n4. **Daily Limit Resets**: Limits reset 24 hours after the first transaction of the day.\n\n5. **Devnet vs Mainnet**: Override Blinks may show \"timeout\" on devnet due to slow confirmation. The transaction usually succeeds - check your vault balance.\n\n## Documentation\n\nFor comprehensive guides, tutorials, and API documentation, visit:\n\n- **Documentation Site**: https://docs.aegis-vaults.xyz\n- **GitHub Docs**: https://github.com/aegis-vaults/aegis-docs\n\n## Support & Community\n\n- **Issues**: https://github.com/aegis-vaults/aegis-sdk/issues\n- **Discord**: [Join our community](https://discord.gg/aegis-vaults)\n- **Twitter**: [@aegis_vaults](https://twitter.com/aegis_vaults)\n\n## License\n\nMIT License\n\n---\n\nMade with ❤️ by the Aegis team\n\n**Guardian API**: https://aegis-guardian-production.up.railway.app\n**Program ID (Devnet)**: `ET9WDoFE2bf4bSmciLL7q7sKdeSYeNkWbNMHbAMBu2ZJ`\n","readmeFilename":"README.md"}