{"_id":"@aspect-warden/policy-engine","_rev":"4-a06238566d927cd80eefaa1c89bc3a5a","name":"@aspect-warden/policy-engine","dist-tags":{"latest":"0.5.0"},"versions":{"0.3.0":{"name":"@aspect-warden/policy-engine","version":"0.3.0","_id":"@aspect-warden/policy-engine@0.3.0","maintainers":[{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"}],"dist":{"shasum":"cb08a014ca65811a0a1f93270a855b5a4858963c","tarball":"https://registry.npmjs.org/@aspect-warden/policy-engine/-/policy-engine-0.3.0.tgz","fileCount":33,"integrity":"sha512-x78Dwc4aPSCTz03ERUIYdxHgcF9vIuz7D1lhMYCcXoXbBIcinDdDt/Fw3SWpEAWG+61uDk46LPeM28P2ZblchQ==","signatures":[{"sig":"MEUCIQCFneKzX++9IUO3yExl3Cx5wUvCOT1Gu4wR/HDrb9OZzwIgSgDnlYdR/z/yWucysm6GQBDgxEs6q4+jyR8TFL2k3uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101510},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"735901a0c7a466aa9c1fb729f5c1e684e9398b1d","scripts":{"test":"vitest run","build":"tsc"},"_npmUser":{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"},"_npmVersion":"11.6.2","directories":{},"_nodeVersion":"24.11.1","dependencies":{"viem":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"peerDependencies":{"@tetherto/wdk-wallet-evm":">=1.0.0"},"peerDependenciesMeta":{"@tetherto/wdk-wallet-evm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy-engine_0.3.0_1774254273096_0.7012613554237754","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aspect-warden/policy-engine","version":"0.3.1","_id":"@aspect-warden/policy-engine@0.3.1","maintainers":[{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"}],"dist":{"shasum":"0bfde40555d5df69cce6248cdc73a399be511ccf","tarball":"https://registry.npmjs.org/@aspect-warden/policy-engine/-/policy-engine-0.3.1.tgz","fileCount":34,"integrity":"sha512-M+FbFkKrRe1Q1YxW295AytmHAWiyzm/KzGxObNgccObN+qSncEzYZa+OB/nWnTjVbahttiHFeCq1k8qm8mUVAQ==","signatures":[{"sig":"MEUCIGredmcdOKUv2tgKTuIF2lCZz6uumL4m9kSCImbpRdoLAiEAzIOBY3sCx/vJShVlxTep8qZnurnSgultzZTluC64W7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105943},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"b4bbdd723ae3f3d7ee7953db5bbe8c043cf9e90b","scripts":{"test":"vitest run","build":"tsc"},"_npmUser":{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"},"_npmVersion":"11.6.2","description":"Policy enforcement engine for AI agent wallets. Validates every transaction against configurable spending rules, anomaly detection, and on-chain constraints (EIP-7702).","directories":{},"_nodeVersion":"24.11.1","dependencies":{"viem":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"peerDependencies":{"@tetherto/wdk-wallet-evm":">=1.0.0"},"peerDependenciesMeta":{"@tetherto/wdk-wallet-evm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy-engine_0.3.1_1774254623988_0.4970657700339196","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aspect-warden/policy-engine","version":"0.4.0","_id":"@aspect-warden/policy-engine@0.4.0","maintainers":[{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"}],"dist":{"shasum":"e1bf4d119c5ccbae3eb514aaeba906e18ef1a1f8","tarball":"https://registry.npmjs.org/@aspect-warden/policy-engine/-/policy-engine-0.4.0.tgz","fileCount":34,"integrity":"sha512-fBq0EXUvPYFMwZE0t+beG1p/1z5FQiAXxgsUVeX33rI2Gt5tuXdnlFKMjdX7wVY4DZFtj8JDa6FI53JeDBg1ow==","signatures":[{"sig":"MEUCICiSFkCG+U28wpUz8F4tRX+nrF3JULsJHJB373diUhWCAiEAzwi15M3v6DRSRfKcyBbDbzfHce1FXBYrA2E5pmSgNow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":105943},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"98c50a417fb194f9041d560bef0faccce75f22be","scripts":{"test":"vitest run","build":"tsc"},"_npmUser":{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"},"_npmVersion":"11.6.2","description":"Policy enforcement engine for AI agent wallets. Validates every transaction against configurable spending rules, anomaly detection, and on-chain constraints (EIP-7702).","directories":{},"_nodeVersion":"24.11.1","dependencies":{"viem":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^1.0.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"peerDependencies":{"@tetherto/wdk-wallet-evm":">=1.0.0"},"peerDependenciesMeta":{"@tetherto/wdk-wallet-evm":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/policy-engine_0.4.0_1774256892441_0.48180723506343415","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aspect-warden/policy-engine","version":"0.5.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc","test":"vitest run"},"dependencies":{"viem":"^2.0.0"},"peerDependencies":{"@tetherto/wdk-wallet-evm":">=1.0.0"},"peerDependenciesMeta":{"@tetherto/wdk-wallet-evm":{"optional":true}},"devDependencies":{"typescript":"^5.4.0","vitest":"^1.0.0","@types/node":"^20.0.0"},"gitHead":"99f56ce8c16fc4b9d95ccfdb28c0d84b2b0a3d15","_id":"@aspect-warden/policy-engine@0.5.0","description":"Policy enforcement engine for AI agent wallets. Validates every transaction against configurable spending rules, anomaly detection, and on-chain constraints (EIP-7702).","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-rSXTrrMJneqe5BLBofGGenZPOMiIBrpyoPK8eXA2IzHKSwWXymIhLG9F43wuG/kwMBKf1J1kBHEgizQJMkVECQ==","shasum":"015e9f8202db36d9f0c0a3da902a9488617b5ae5","tarball":"https://registry.npmjs.org/@aspect-warden/policy-engine/-/policy-engine-0.5.0.tgz","fileCount":34,"unpackedSize":109474,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDM0tVkLg1z6yat9dx4gM70ev/w+XVCZQFahT8JeYpX4wIhAIcxQwokWAd1t9XSmSdgFZ0IsjYxvRjbFdwolVDbw1R6"}]},"_npmUser":{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"},"directories":{},"maintainers":[{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/policy-engine_0.5.0_1774261074437_0.4790550975777199"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T08:24:32.714Z","modified":"2026-03-23T10:17:54.747Z","0.3.0":"2026-03-23T08:24:33.267Z","0.3.1":"2026-03-23T08:30:24.160Z","0.4.0":"2026-03-23T09:08:12.630Z","0.5.0":"2026-03-23T10:17:54.589Z"},"description":"Policy enforcement engine for AI agent wallets. Validates every transaction against configurable spending rules, anomaly detection, and on-chain constraints (EIP-7702).","maintainers":[{"name":"atmegabuzz","email":"atmegabuzz@gmail.com"}],"readme":"# @aspect-warden/policy-engine\n\nPolicy enforcement engine for AI agent wallets. Validates every transaction against configurable spending rules, anomaly detection, and on-chain constraints (EIP-7702).\n\n## Install\n\n```bash\nnpm install @aspect-warden/policy-engine\n```\n\n## Quick Start\n\n```ts\nimport {\n  PolicyEngine,\n  AuditLogger,\n  conservativePolicy,\n} from '@aspect-warden/policy-engine';\n\n// Create a policy from a built-in template\nconst policy = conservativePolicy('agent-1');\n\n// Initialize the engine and audit logger\nconst engine = new PolicyEngine(policy);\nconst logger = new AuditLogger();\n\n// Evaluate a transaction\nconst decision = engine.evaluate({\n  to: '0xRecipientAddress',\n  value: 5_000000n, // 5 USDT (6 decimals)\n  token: '0x7169D38820dfd117C3FA1f22a697dBA58d90BA06',\n  chain: 'sepolia',\n});\n\nlogger.log(decision);\n\nconsole.log(decision.approved); // true\nconsole.log(decision.riskScore); // 0-100\n```\n\n## Policy Templates\n\nBuilt-in templates for common use cases:\n\n```ts\nimport {\n  conservativePolicy,  // max 10 USDT/tx, 50 USDT/day\n  moderatePolicy,      // max 100 USDT/tx, 500 USDT/day\n  aggressivePolicy,    // max 1000 USDT/tx, 5000 USDT/day\n  transferOnlyPolicy,  // transfers only, no contract calls\n  defiPolicy,          // DeFi-aware with Aave/Uniswap rules\n  rampUpPolicy,        // limits increase over time\n  tieredPolicy,        // different approval levels by amount\n} from '@aspect-warden/policy-engine';\n```\n\n## Custom Policy\n\n```ts\nimport type { AgentPolicy } from '@aspect-warden/policy-engine';\n\nconst policy: AgentPolicy = {\n  agentId: 'my-agent',\n  maxPerTx: 50_000000n,          // 50 USDT max per transaction\n  dailyLimit: 200_000000n,       // 200 USDT daily cap\n  weeklyLimit: 1000_000000n,     // 1,000 USDT weekly cap\n  requireApprovalAbove: 40_000000n,\n  allowedTokens: ['0x7169D38820dfd117C3FA1f22a697dBA58d90BA06'],\n  blockedTokens: [],\n  allowedRecipients: [],         // empty = allow all\n  blockedRecipients: [],\n  allowedChains: ['sepolia'],\n  cooldownMs: 30_000,            // 30s between transactions\n  maxTxPerDay: 50,\n  anomalyDetection: {\n    maxTxPerHour: 10,\n    maxRecipientsPerHour: 5,\n    largeTransactionPct: 50,\n    burstThreshold: 4,\n    burstWindowMs: 60_000,\n  },\n};\n```\n\n## 19 Enforcement Rules\n\n| Rule | Description |\n|------|-------------|\n| `maxPerTx` | Single transaction limit |\n| `dailyLimit` | 24-hour rolling spending cap |\n| `weeklyLimit` | 7-day rolling cap |\n| `monthlyLimit` | 30-day rolling cap |\n| `requireApprovalAbove` | Manual approval threshold |\n| `cooldownMs` | Minimum time between transactions |\n| `allowedTokens` | Token whitelist (empty = all) |\n| `blockedTokens` | Token blacklist |\n| `allowedRecipients` | Recipient whitelist (empty = all) |\n| `blockedRecipients` | Recipient blacklist |\n| `allowedChains` | Chain whitelist |\n| `activeHoursUTC` | Time window restrictions |\n| `minPerTx` | Minimum transaction amount |\n| `maxTxPerDay` | Max transaction count per day |\n| Anomaly detection | Velocity, bursts, escalation, concentration |\n| Velocity ramp-up | Limits increase over time |\n| Tiered authorization | Different approval by amount |\n| Protocol policies | DeFi-specific rules (Aave, Uniswap) |\n| Budget pool | Multi-agent shared spending limits |\n\n## EIP-7702 On-Chain Enforcement\n\n```ts\nimport { EIP7702Manager } from '@aspect-warden/policy-engine';\n\nconst manager = new EIP7702Manager({\n  rpcUrl: 'https://rpc.sepolia.org',\n  policyDelegateAddress: '0xYourDeployedContract',\n});\n\n// Delegate an EOA to the PolicyDelegate contract\nawait manager.delegateAccount(walletClient, policy);\n\n// Create a scoped session key for a sub-agent\nawait manager.createSessionKey(walletClient, {\n  eoa: '0xOwner',\n  key: '0xSubAgent',\n  maxPerTx: 10_000000n,\n  dailyLimit: 50_000000n,\n  validUntil: Math.floor(Date.now() / 1000) + 86400,\n});\n```\n\n## Exports\n\n```ts\n// Core\nPolicyEngine, PolicyAccount, AuditLogger, EIP7702Manager\n\n// Templates\nconservativePolicy, moderatePolicy, aggressivePolicy,\ntransferOnlyPolicy, defiPolicy, rampUpPolicy, tieredPolicy\n\n// Multi-agent coordination\nBudgetPool, ContractRiskClassifier, IndexerService\n\n// Middleware\nwardenMiddleware, PolicyWalletManager, ERC8004Manager\n\n// Protocol policies\nTRANSFER_ONLY, AAVE_SUPPLY_ONLY, AAVE_FULL,\nUNISWAP_SWAP_ONLY, READ_ONLY\n\n// Types\nAgentPolicy, PolicyDecision, AuditEntry, RiskFactors,\nAnomalyDetectionConfig, DefiPolicyConfig, IWalletAccount\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}