@glideco/policy-engine
v0.1.0
Published
Pure-function policy-envelope evaluator for Glide agent banking. Evaluates 13 policy axes (per_tx_max, daily_cap, velocity_caps, counterparty_allowlist, time_window, etc.) against a TransactionIntent and returns ALLOW / DENY with reason codes.
Maintainers
Readme
@glideco/policy-engine
Pure-function policy-envelope evaluator for Glide agent banking. Evaluates 13 policy axes against a TransactionIntent and returns ALLOW / DENY with reason codes.
Install
npm install @glideco/policy-engineUsage
import { evaluate } from '@glideco/policy-engine';
import type { AgentPolicyEnvelope, TransactionIntent } from '@glideco/schemas';
const envelope: AgentPolicyEnvelope = {
per_tx_max: { amount_usd_cents: 100_00, asset: 'USDC' },
daily_cap: { amount_usd_cents: 1_000_00 },
counterparty_allowlist: [{ kind: 'evm_address', value: '0xabc…' }],
// … 10 more axes
};
const intent: TransactionIntent = {
recipient: '0xabc…',
amount_usd_cents: 25_00,
asset: 'USDC',
chain: 'base',
};
const result = evaluate(envelope, intent, { stateContext });
if (result.decision === 'DENY') {
console.log('Blocked:', result.reasons);
}Branch A' enforcement (Privy spike)
Per the Headless v1 Privy spike result (docs/designs/privy-policy-spike.md):
- EVM: all 13 axes enforce on Privy programmable signing policy NATIVELY.
- Solana:
per_tx_max,counterparty_allowlist,time_windowenforce natively. Stateful aggregation (daily_cap,velocity_caps) is enforced in the router Redis layer.
This package supports BOTH paths — evaluate() is pure-function and chain-agnostic; the caller is responsible for choosing whether the result enforces on Privy or in their own state layer.
License
MIT — see LICENSE.
Source
This package lives in the Glide OSS Cathedral monorepo. For the larger context (agent banking, money-safety contracts, OAuth flow) see docs/agents/.
